studio - integrar sdk facebook en android
Android Facebook SDK 3.0 muestra que "remote_app_id no coincide con el ID almacenado" al iniciar sesión (7)
Además, asegúrese de ingresar el hash en el lugar correcto en el portal de desarrollo de Facebook. Edite la configuración de la aplicación y seleccione la aplicación nativa de Android.
Por error, he puesto el hash en "Configuración de la aplicación de muestra".
Intento crear una aplicación que use Facebook SDK para Android 3.0. Pero cuando intento llamar
Session.openActiveSession
Simplemente me da un SessionState con CLOSED_LOGIN_FAILED, y LogCat es:
12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
He buscado StackOverflow con "remote_app_id" y los resultados son "Bundle ID" en iOS, pero no sé qué significa "remote_app_id" en Android. Ya configuré el nombre del paquete y el nombre de la actividad en la configuración de mi aplicación de Facebook. No tengo idea de la razón del error.
Me atrapó el openssl incorrecto, que generó la clave hash incorrecta. utilicé openssl desde http://gnuwin32.sourceforge.net/packages/openssl.htm que resolvió el problema.
Obtendrá la clave hash con la clave de depuración ... Lo cual puede funcionar si no ha firmado el paquete y no ejecuta la aplicación en modo de depuración. Lo que debes hacer es:
1) Vaya al archivo de manifiesto y agréguelo a la aplicación android: debuggable = "true".
2) Ahora ejecuta tu aplicación y supervisa el logcat.
3) Te imprimirán una nueva clave que será la que coincida con x9SLcMXBlgly1f36PJuuc4a3YAc. La clave que tienes ahora tiene un signo = en la última.
4) Registre esta clave en el sitio del desarrollador de facbook
Truco alternativo
Puede hacer otra cosa Simplemente registre esta clave en el sitio de desarrolladores de Facebook x9SLcMXBlgly1f36PJuuc4a3YAc =
Simplemente agregue = a la clave que se muestra en la aplicación de Facebook.
¡¡estás listo!! Espero que esto funcione
Otra opción es imprimir el hash de clave enviado a Facebook y usar ese valor.
Realice los siguientes cambios en el método onCreate()
en su actividad principal:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures){
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Reemplace com.facebook.samples.loginhowto
con your own package name
.
¡Esto funcionó para mí!
Otro posible error (que me sucedió) es configurar un "Key Hash" en la consola de la aplicación de Facebook y firmar la aplicación de Android usando otro keystore.
Lamentablemente, esto se debe a que el Tutorial de Inicio de Facebook induce este error. Dice que los desarrolladores de Android deben usar la clave de depuración predeterminada de Android en sus ejemplos y no explica que el Key Hash se debe generar con el mismo keystore y que firmará su aplicación.
Mi recomendación es configurar dos Key Hashes en su consola de Facebook:
- la clave predeterminada de depuración de Android:
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore | openssl sha1 -binary | openssl base64
- su clave de lanzamiento de la aplicación:
keytool -exportcert -alias youreppreleasekeyalias -keystore ~ / .your / path / release.keystore | openssl sha1 -binary | openssl base64
Recuerde: no puede publicar una aplicación que está firmada con la clave de depuración generada por las herramientas SDK. Por lo tanto, no es posible publicar una aplicación utilizando solo la clave hash generada con la primera línea de comando anterior (como sugiere el tutorial de Facebook).
Para obtener más información sobre cómo firmar su solicitud, visite Firmar su solicitud .
Resolví esta pregunta. El problema es que el "Key Hash" que generé usando "keytool" era incorrecto. Cuando la "herramienta de claves" solicita una contraseña, debe usar "android" (sin comillas). Estaba usando mi propia contraseña en su lugar. Cuando cambié mi contraseña, el problema simplemente voló. Espero que esto ayude.
Tuve el mismo problema, descubrí que el openssl estaba creando el sha1 equivocado. descargué uno nuevo y funcionó a las mil maravillas.