En una de mis aplicaciones necesito obtener datos de Facebook ... Estoy haciendo esto:
He creado la ID de la aplicación . Inicia sesión con éxito, pero después de cerrar sesión, inicio sesión y luego me da:
¿Qué está haciendo mal? Estoy usando el SDK de Facebook ... He instalado Facebook en mi teléfono ... Funciona bien dentro de un emulador, pero eso no tiene instalada la aplicación de Facebook incorporada.
Este es mi código:
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
}
else {
dispatcher.runHandler("login");
}
Respuestas:
La clave hash generada es incorrecta. Puede obtener la clave hash utilizando dos pasos.
Uno es a través de un símbolo del sistema. Otro es a través de la codificación. La clave hash a través de un símbolo del sistema funciona solo la primera vez. No se el motivo. También tengo el mismo problema. Así que lo probé mediante programación.
Sigue estos pasos:
Pegue el siguiente código en
oncreate()
.Modifique "com.example.packagename" con el nombre de su paquete en la codificación anterior sin falta (puede encontrar el nombre de su paquete en el archivo de manifiesto de Android).
Ejecute su aplicación Vaya a la actividad donde pegó el código anterior. En el archivo LogCat, busque "KeyHash". Puede encontrar un hash clave. Copie el hash clave y vaya a la página del panel de la aplicación de Facebook. Vaya a configuración e ingrese los detalles como en la imagen a continuación.
Una vez que haya completado el paso anterior, vuelva a iniciar la aplicación. Ahora puede iniciar sesión en Facebook. Para obtener más detalles sobre el hash clave, consulte el enlace .
Si agrega información incorrecta en la página de configuración, significa que dará algún error. Así que usa la información correcta allí. Y también si el público (aparte de usted) necesita usar su aplicación significa que debe habilitar el permiso (cambie "sí" en "Estado y revisión" al lado de la configuración) .
fuente
Si está utilizando la firma de la aplicación Google Play:
Abra la sección de firma de la aplicación en Google Play Console y obtenga el hash SHA-1 en el certificado de firma de la aplicación . Luego conviértalo a Base64 , por ejemplo con esta herramienta: Hexadecimal -> decodificador de cadena base64
fuente
echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Si enfrenta este problema, coloque esta clave en su developer.facebook.com :
Luego, asegúrese de que su aplicación esté activa en developer.facebook.com .
Este círculo verde indica que la aplicación está activa:
Si no es así, siga estos dos pasos para hacer que su aplicación esté activa:
Paso 1 Vaya a su aplicación → configuración → agregar correo electrónico de contacto y aplique Guardar cambios.
Paso 2 Vaya a la opción Revisión de la aplicación y asegúrese de que esta opción sea Sí . Agregué una captura de pantalla:
Nota: Si desea copiar el hashkey, verifique BlueServiceQueue en LogCat .
fuente
BlueServiceQueue
en logcatTengo el mismo problema. Estaba seguro de que se debió a una falla muy pequeña y sí lo fue.
Encontré la solución:
Al generar la clave hash de depuración en mi computadora, ingresé la contraseña de mi sistema. Pero la contraseña debe ser la siguiente:
Ingrese la contraseña del almacén de claves: "Android". Este fue el único problema en mi caso.
----- Para generar el hash de la clave de depuración , use este comando -
Introduzca la contraseña del almacén de claves: 'android'
----- Para generar el hash de la tecla Release , use este comando:
Proporcione su contraseña del almacén de claves después de ejecutar este comando.
fuente
Experimenté el mismo problema. Hice una breve investigación sobre las posibles razones de este extraño comportamiento y encontré lo siguiente:
Durante la primera ejecución de una nueva aplicación de Facebook, permitirá la conexión / inicio de sesión incluso si no especifica ningún hash clave.
Para mí, el tutorial que proporcionó Facebook no generó el hash de clave correcto, porque estaba dando la configuración incorrecta . Al ejecutar:
asegúrese de verificar todas las propiedades: la
HOMEPATH
existencia del almacén de claves, etc. Quizás también tenga que proporcionar una contraseña.Lo que generó la configuración adecuada fue la solución sugerida por @Mahendran .
Además, si ve el error publicado originalmente ( http://i.stack.imgur.com/58q3v.png ), lo más probable es que el hash clave que vea en la pantalla sea el real. Si nada más funciona, intente ingresarlo en Facebook.
Obtuve todos esos resultados con: edición de Windows 7 de 64 bits, Android Studio 1.2.2, JDK 7.
fuente
Según Facebook Login para Android , debe proporcionar el valor hash clave. Para obtenerlo, necesitará la clave utilizada para firmar su solicitud.
fuente
Debe crear dos hashes clave, uno para Debug y otro para Release.
Para la depuración hash de clave de :
En OS X, ejecute:
En Windows, ejecute:
Fuente de hashes clave de depuración
Para el hash de la tecla Release :
En OS X, ejecute (reemplace lo que está entre
<>
sus valores) :En Windows, use (reemplace lo que está entre
<>
sus valores) :Liberar fuente de hashes clave
fuente
¡Intenté todas las respuestas anteriores y nada ayudó a mi caso con mis clientes!
Entonces mi cliente recordó que tenía la aplicación de Facebook instalada en su dispositivo. Después de que lo quitó. El inicio de sesión funcionó perfectamente.
El hashkey había cambiado, y he reemplazado las antiguas claves hash en la Consola de desarrolladores de Facebook con la clave del error (como se sugirió anteriormente), ¡y funciona!
La aplicación de Facebook en sí podría ser el problema, por lo que es mejor que descubra esto en un dispositivo con la aplicación de Facebook instalada y en un dispositivo con la aplicación de Facebook no instalada y maneje ambos casos ...
fuente
Así es como resolví este problema:
Primero tienes que obtener el valor SHA-1. Para eso hay dos formas.
Para obtener el valor SHA-1 en Android Studio.
O
Para obtener el valor SHA-1 del archivo de almacén de claves .
Copie el valor SHA-1 en su portapapeles de esta manera:
Y abra hexadecimal -> decodificador de cadena Base64 para convertir su valor SHA-1 a Base64.
Esto es lo que requiere Facebook.
Obtenga el hash generado "******************** =" y copie el hash clave en la aplicación de Facebook.
fuente
Estaba teniendo el mismo problema. Primero inicie sesión, bien, pero luego, un hash de clave inválido.
El SDK de Facebook para Unity obtiene el hash de clave incorrecto. Obtiene la clave de "C: \ Users \" your user ".android \ debug.keystore" y, en un mundo perfecto, debería obtenerla del almacén de claves que creó en su proyecto. Es por eso que le dice que el hash de clave no está registrado.
Según lo sugerido por Madi , puede seguir los pasos en este enlace para encontrar la clave correcta. Solo asegúrese de señalarlos al almacén de claves dentro de su proyecto. De lo contrario, no obtendrá la clave correcta.
fuente
El siguiente código le dará su hash para Facebook, pero debe seguir estos pasos para obtener el hash de candidato de lanzamiento.
Copia y pega este código en tu actividad principal
Generar un APK firmado archivo .
https://developers.facebook.com/apps
. Está bajo configuración.fuente
Después de una larga investigación, encontramos una solución.
Habíamos establecido permisos como:
Esto funcionó por primera vez, pero cuando volvimos a iniciar sesión en Facebook, se produjo el error de hash no válido .
La solución simple era cambiar la línea anterior a:
¡Y funcionó como una dicha!
Facebook debería devolver la excepción correcta en lugar del error engañoso de la clave hash no válida.
fuente
Después de tantas pruebas me encontré con una solución para esto. Generé y agregué claves de depuración y liberación a la consola de desarrolladores de Facebook y aún recibí el error.
La única solución que funcionó para mí fue desinstalar el programa OpenSSL de Google y descargarlo desde Win32 / Win64 OpenSSL Installer para Windows
Realmente funciona como magia.
fuente
A pesar de que esta pregunta se ha respondido de muchas maneras útiles, solo quería agregar que cuando seguí la respuesta de Rafal Maleks (usando las teclas hash en Google Play Console) NO pude usar la tecla SHA1 de firma de la aplicación, todavía obtuve el genérico error de Facebook En su lugar, necesitaba usar la huella digital del certificado SHA-1 de la parte Cargar certificado (justo debajo de la parte Firma de la aplicación en Google Play Console). Mismo proceso de lo contrario;
Copie la huella digital del certificado SHA-1 de la sección Cargar certificado en la Consola de Google Play
Convierta el SHA-1 usando: http://tomeko.net/online_tools/hex_to_base64.php y copie la salida (base64)
Péguelo en la entrada de Key Hashes en developer.facebook.com y guarde los cambios.
Esperemos que esta respuesta no sea redundante y ayude a alguien que no pueda hacerlo funcionar con el certificado de firma de la aplicación.
Ahora el inicio de sesión de Facebook funciona en mi aplicación tanto en modo de depuración como de liberación.
fuente
Pegue el siguiente código en su método OnCreate:
Simplemente modifique el nombre del paquete. Luego vaya a su archivo LogCat y seleccione Búsqueda de depuración aquí. Luego encontrarás la clave hash. Ahora copie esta clave hash y luego vaya al sitio developer.facebook.app_id, edite su clave hash y presione Save. Ahora ejecute su proyecto de Android nuevamente. Creo que el problema se resolverá.
fuente
Esto puede ayudar a alguien con el mismo problema.
Genere el hash de clave usando el siguiente código
Cómo usar keytool
Péguelo en el campo requerido en el desarrollador de Facebook
En Android Studio, menú Archivo → Estructura del proyecto
Agregar parámetros de firma.
Seleccionar sabores
Seleccione la configuración de firma que creamos.
Seleccionar tipo de compilación
Seleccione la variante de compilación y compílela
fuente
Tuve el mismo problema cuando estaba depurando mi aplicación. Reescribí el hash que has tachado en la imagen adjunta (la que Facebook dice que no es válida) y lo agregué en la consola de desarrolladores de Facebook a los hashes clave. Solo ten cuidado con los errores tipográficos.
Esta solución es más una solución fácil que una solución adecuada.
fuente
Si está escribiendo el keyhash manualmente (por ejemplo, desde el dispositivo móvil al Panel de Facebook), asegúrese de diferenciar entre la letra L pequeña y la letra I mayúscula.
fuente
fuente
Lo que Facebook usó no es la contraseña y el alias predeterminados para la depuración. Debe cambiarlo a continuación y funcionará.
Si no ha cambiado nada con la contraseña predeterminada, debería ser "android" .
También puede configurarlo en el archivo build.gradle. Pero se debe usar la misma contraseña de alias para generar el hash:
fuente
Aquí hay muchas respuestas correctas. Sólo una cosa:
Pegue el hash recibido en Aplicación → Configuración → Principal , no a través del tutorial de inicio rápido.
fuente
Yo tuve el mismo problema.
Asegúrese de crear el archivo APK con el mismo dispositivo que generó el hashkey que se almacena en la sección de desarrolladores de Facebook.
fuente
Lo arreglé agregando lo siguiente en
MainApplication.onCreate
:Luego cargué esto en la consola de desarrollador de Google y luego descargué el APK derivado que, por cualquier razón, tiene un hash de clave totalmente diferente.
Luego usé LogCat para determinar el nuevo hash clave y lo agregué a Facebook como otros usuarios han descrito.
fuente
Si está generando hashes clave de liberación, asegúrese de ingresar la contraseña real de su almacén de claves y no "android".
Este fue mi problema. La versión de depuración funcionaba, pero la versión APK no.
fuente
Use el siguiente código en el método onCreate () de su actividad:
Ejecute este código. Esto generará la clave hash. Copie este KeyHash en la configuración de la aplicación de Facebook y guarde los cambios. Luego inicie sesión en su aplicación. Esto funcionará perfectamente en el futuro también.
fuente