android - podemos - no puedo abrir facebook en mi celular
La aplicación está mal configurada para el inicio de sesión de Facebook: problema de integración de Android con Facebook (18)
He integrado mi aplicación con Facebook, y para esto estoy usando Graph API de Facebook. Estoy recuperando información de perfil y amigos. Está funcionando bien en mi dispositivo que tiene Android 2.3 (Gingerbread), pero recientemente mi cliente se ha enfrentado a un problema mientras intenta conectarse a Facebook a través de mi aplicación. Él tiene Android 4.0 (Ice Cream Sandwich) en su dispositivo. Cuando hace clic en un botón de la aplicación que lo lleva a la pantalla de inicio de sesión de Facebook, después de iniciar sesión recibe un mensaje:
Mi aplicación está mal configurada para el inicio de sesión de Facebook. Presiona Ok para volver a la aplicación sin conectarte a Facebook.
No entiendo cuál es el problema, ya esté relacionado con la versión de Android o qué.
¿Como puedo solucionar este problema?
Cuando crea el hash de clave, puede terminar con algo que tenga el signo de igualdad "=" al final, como ga0RGNYHvNM5d0SLGQfpQWAPGJ8 = . Si bien Facebook acepta con gusto el signo de igualdad como parte del hash de clave, debe eliminarlo para que funcione.
Además, compruebe la respuesta aceptada a Android Facebook SDK 3.0 da "remote_app_id no coincide con el ID almacenado" al iniciar sesión : al obtener el hash de clave para el almacén de claves de depuración, use la contraseña "android". De lo contrario, el hash de clave será incorrecto y obtendrá el error especificado en la pregunta (sea amable y vote la respuesta allí si le ayudó).
En cuanto a las aplicaciones firmadas con OWN keystore: Después de pasar varias horas resolviendo este problema, finalmente lo conseguí y quiero brindar una respuesta para aquellos que aún sufren:
Mis pasos: firmé mi aplicación a través de eclipse con mi propio archivo de almacén de claves (NO depurador.keystore). A través de la línea de comando y los comandos conocidos (keytool -exportcert -alias -keystore ~ / .android / | openssl sha1 -binary | openssl base64) He recibido satisfactoriamente el hash de la clave. Pegué el hash de clave en el panel de desarrollo dev, esperé unos minutos -> Todavía el mismo ERROR (como se especifica en la pregunta anterior). Probé varias herramientas clave diferentes, en varios jds, etc. ... nada cambió.
Solución: activé depurado en manifiesto, activo la depuración en facebook sdk. luego firmé la aplicación con mi propio almacén de claves y la cargué en un dispositivo real. Conecté el dispositivo a través de USB y abrí la perspectiva DDMS para ver Logcat en el dispositivo.
Inicié mi aplicación y dejé que apareciera el mensaje de error. Imprime una clave totalmente diferente de la clave generada por keytool. Tomé esta clave de Logcat, la pegué en el panel de desarrollo y voilé -> TODO FUNCIONA
Todavía no sé por qué sucede esto o qué está causando la clave incorrecta, pero de esta manera me funciona.
En el sistema Debian como ubuntu use la keytool
de keytool
de java
encuentra en el directorio /usr/lib/jvm/jdk*.*.*/bin/keytool
y genere de esta manera
/usr/lib/jvm/jdk1.7.0/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
De esta forma obtienes la auténtica clave hash que puedes poner debajo de tu aplicación hash de Facebook.
Enfrenté el mismo problema, después de pasar 24 horas y mucha búsqueda usamos este método para resolver mi problema.
Compruebe el identificador de paquete actual del proyecto de Xcode, por ejemplo: com.nombre de su empresa.nombre de su aplicación
use el mismo nombre de compañía.nombre de su empresa.nombre de paquete de su nombre de aplicación para crear aplicaciones en Facebook, consulte el archivo adjunto.
Es un problema del almacén de claves ... configure su eclipse para usar el mismo almacén de claves para el que se configuró la aplicación.
Hice un Toast
por las excepciones y encontré que arroja una excepción de desajuste de clave. Agregué la clave en la página de la aplicación FB
y funciona bien.
Intenta configurarlo así:
Primero descargue OpenSSL (si tiene una máquina de 64 bits, debe descargar openssl-0.9.8e X64 , no la versión más reciente, openssl-0.9.8k X64, porque la salida no será válida). Extraiga sus archivos, cree la carpeta openssl
, por ejemplo en C: / y copie archivos allí.
Encuentra tu camino a keytoo. El mío es C: / Program Files / Java / jdk1.7.0_05 / bin.
Encuentra tu camino a debug.keystore
. Puede ver cuál es la ruta si abre en Eclipse, en el menú Ventana -> Preferencias -> Android -> Compilar , y verá Depósito de claves predeterminado Depuración: - y la ruta.
Encuentra tu camino a openssl
. El mío es C: / openssl8e / bin /.
Abre cmd y escribe:
"C: / Archivos de programa / Java / jdk1.7.0_05 / bin / keytool" -exportcert -alias androiddebugkey -keystore "C: / Users / User.android / debug.keystore" | "C: / openssl8e / bin / openssl" sha1 -binary | "C: / openssl8e / bin / openssl" base64
A y luego presione Entrar .
Insertar contraseña: android
Obtendrá su clave hash para debug.keystore
.
Cuando exporta una APK firmada y crea un almacén de claves para la aplicación, simplemente reemplace en cmd debugkeystore alias con su alias para la aplicación, la ruta del almacén de claves con la ruta a su almacén de claves recientemente creado para la aplicación e inserte la contraseña de su app.keystore
, y obtendrá una nueva clave hash para su aplicación firmada.
La respuesta de Jesse Chen está bien. El SDK de Facebook funciona bien, no lo rompa.
Nuevamente encontré este problema y descubrí que la documentación de Facebook SDK está corregida y que ahora está muy bien. Ahora está guiando cómo depurar y liberar las claves hash; solo haz lo que dice.
A continuación está mi vieja historia. Faltan las dos teclas hash, una para la depuración y otra para la aplicación firmada y lanzada para la vieja Play Store .
Descubrí que el problema estaba en mi caso en la documentación del SDK de Facebook. Nos guió a usar el hash de la clave de depuración y ponerlo en la configuración de la aplicación de Facebook. Hash es guiado para llegar de esta manera:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Esto funciona bien cuando está cargando o ejecutando aplicaciones desde Eclipse .
Pero, si publica su aplicación en Andoid Play, debe usar su propia clave de editor para exportar el archivo .apk firmado. ¡Con ese .apk, el hash en la consola de la aplicación de Facebook ya no es válido! Debe obtener un hash para la clave de desarrollador de esta manera:
keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64
Y colóquelo en Android Key Hash en la consola de la aplicación de Facebook para su aplicación publicada. Después de eso, SSO funciona bien nuevamente para su archivo .apk firmado.
Por lo general, este problema podría resolverse con dos controles:
- bandera en la consola de Facebook para publicar en vivo la configuración de Facebook
- api key discordancias
Por lo que pude deducir, es un problema de Facebook y ha sido denunciado. Pero, el problema persiste.
Una forma de evitar esto (probada en 2.3.3) es piratear el SDK de Facebook, buscar los 2 métodos de autorización y cambiar el DEFAULT_AUTH_ACTIVITY_CODE a FORCE_DIALOG_AUTH . Esto deshabilitará la función de inicio de sesión único.
Si tu prefieres llegar a
public void authorize(Activity activity, String[] permissions,
int activityCode, final DialogListener listener)
y deshabilita la parte startSingleSignOn . Es preferible no hacerlo, porque eventualmente Facebook resolverá el problema y solo tendrá que volver a poner la antigua constante.
EDITAR
Esta solución plantea problemas de seguridad. Verifique la respuesta de Jesse Chen.
Pude resolver el problema que estaba teniendo con la configuración incorrecta de Facebook en Android al asegurar que tenía la clave de hash correcta para una versión de lanzamiento.
Para obtener la clave hash de la versión de lanzamiento, busque la clave que usó para firmar la aplicación y haga lo siguiente, inserte el nombre de su alias de almacén de claves (sin corchetes). Si no conoce su alias, puede encontrarlo exportando su aplicación como una aplicación firmada y el alias está en la segunda página del asistente. También inserte la ruta a su almacén de claves (sin paréntesis).
keytool -exportcert -alias [Alias of your keystore] -keystore [Path to keystore] | openssl sha1 -binary | openssl base64
Recibí el mismo error hace unos días. En mi caso, se debió a una falta de coincidencia de las teclas de Android. Así es como lo solucioné si te puede ayudar también:
Abra Util.java en el SDK de Facebook, establezca private static boolean ENABLE_LOG = true;
. Ahora ejecuta tu aplicación e ingresa tu identificación de correo electrónico y contraseña. Facebook devuelve una firma si hay un desacuerdo clave. Encontrará esta clave (firma) en LogCat . Simplemente copie esta clave y péguela en el panel de la aplicación. Eso debería arreglar el problema. Recuerde establecer private static boolean ENABLE_LOG = true;
volver a falso
Simplemente tuve el mismo problema y la solución resultó ser súper simple. Cuando creé la aplicación en el tablero, solo había agregado el hash de clave para el almacén de claves de depuración de Android. Todo esto funciona bien si instala la aplicación como desarrollador a través de un cable USB en este caso.
Una vez que tenga una aplicación en Play Store, usará una clave de producción para firmar la aplicación. Esto también significa que debe obtener el hash de clave de la clave de producción como para la clave de depuración y agregarlo como un segundo hash a la lista de hashes de aplicaciones nativas.
solo para recordar cómo funciona el hash de claves: keytool -exportcert -alias -keystore ~ / keys / android_keystore | openssl sha1 -binary | openssl base64
¡Espero que ayude!
También encontré este problema.
Simplemente vaya a la página de inicio de desarrolladores de Facebook here
y siga el paso 4: la cosa con la línea de comando.
Trabajó para mi.
Disfrutar.
Trabajo en Facebook, y este es un tema importante que debe abordarse. La otra respuesta para esta pregunta sugiere que deshabilitar SSO es muy malo y abrirá su aplicación a aplicaciones maliciosas que pueden robar las credenciales de Facebook de su usuario.
El truco inicia un diálogo de WebView en Facebook sin SSO, y el usuario debe escribir sus credenciales de inicio de sesión en ese diálogo. Las aplicaciones maliciosas pueden robar esta información fácilmente. Siempre se recomienda implementar Facebook SSO correctamente para garantizar que su aplicación sea segura y proteja los datos confidenciales de su usuario.
Antes de agregar este mensaje de error, el diálogo se cerraría automáticamente sin previo aviso y fallaría silenciosamente. Agregamos este mensaje de error para mostrar visualmente que hay un problema con la configuración de su aplicación en el tablero de su aplicación de Facebook. Para Android, si revisa su LogCat , verá que después de presionar "Aceptar", debe haber un mensaje de error que mostrará una descripción más técnica de lo que está causando la autenticación fallar.
Por ejemplo, si utiliza nuestro ejemplo de Hackbook y no proporcionó su propia APP_ID en la fuente y no agregó su clave hash al tablero, verá este error en LogCat después de presionar "Aceptar" en el diálogo SSO nativo (si Util.ENABLE_LOG está establecido en verdadero):
D / Facebook-authorize (24739): Error de inicio de sesión: invalid_key: error de clave de Android. Su clave "uk3udeH7vrOGNFH2FJjdJbdWJWI" no coincide con las claves permitidas especificadas en la configuración de su aplicación. Verifique la configuración de su aplicación en http://www.facebook.com/developers
Agregamos el mensaje de error visual para ayudarlo. Esto, en teoría, no rompe implementaciones previas si se implementó correctamente para empezar . Si ve este mensaje de error, significa que no configuró la configuración de su aplicación correctamente en su tablero .
Revisa el nombre de tu clase / paquete de Android, las teclas hash de Android, etc. No verás este mensaje si hiciste todo correctamente.
En resumen , recibe ese mensaje de error porque hay un problema con la configuración de su aplicación, por ejemplo, una falta de coincidencia entre las teclas hash de Android en su tablero. Antes de que Facebook agregara este mensaje de error, el diálogo se iniciaba, luego se cerraba automáticamente y fallaba. Para solucionar esto, verifique si su LogCat contiene algún mensaje de error y asegúrese de tener todo implementado correctamente. Puede leer nuestra documentación para asegurarse de tener todo correcto. No use la respuesta aceptada para esta pregunta.
También puede seguir el informe de errores externos que un desarrollador de Facebook ha informado para obtener más actualizaciones.
Tuve este problema hace unos minutos en 4.0.4 y parece haberse resuelto solo.
Tuve un problema similar, pero para iOS.
La solución tiene que ver con la configuración de la aplicación de Facebook en el desarrollador de juegos de Facebook.
Para iOS, se deben hacer 2 cosas:
Activado el inicio de sesión de Facebook
La identificación del paquete debe ser la misma que la aplicación
Aunque es tarde, sigue siendo útil: * Esta es la forma más común de hacerlo (para la clave de depuración, cambie en consecuencia para la versión): *
keytool -exportcert -alias androiddebugkey -keystore "C:/Users/<User>/.android/debug.keystore" > <Drive letter>:/debug.txt
openssl sha1 -binary "<Drive letter>:/debug.txt" > "<Drive letter>:/debug_sha.txt"
openssl base64 -in "<Drive letter>:/debug_sha.txt" > "<Drive letter>:/debug_base64.txt"
El hash está en el último archivo generado: debug_base64.txt .... ábralo y copie el hash.
Recuerde reemplazar "" y con su nombre de usuario y letra de unidad de su elección