2012-05-09 14 views
9

Estoy creando una aplicación que tendrá soporte para Facebook. He descargado la API de Facebook y su muestra llamada "Hackbook" desde los repositorios originales de Git. El problema es con el inicio de sesión: si la aplicación FB original no está instalada en el teléfono, el inicio de sesión pasa por un diálogo personalizado y todo funciona, pero si la aplicación FB está instalada, el Hackbook redirige automáticamente a la aplicación FB original y luego no ocurre nada. Es imposible iniciar sesión. He probado esto en cinco teléfonos diferentes, y siempre fue el mismo problema.El inicio de sesión en la API de Facebook falla con la aplicación FB instalada en el teléfono

Respuesta

18

Tuve un problema similar. En mi caso, no había creado una clave hash con mi clave de firma. Acabo de tener una clave hash creada con la clave de firma predeterminada debug.keystore.

Tan pronto como creé una clave hash utilizando mi clave de firma de lanzamiento de la aplicación, ese problema se solucionó. Si aún no lo ha hecho, cree una nueva clave hash con su clave de firma (para cargarla en el mercado) y agréguela al panel de control de Facebook de su aplicación.

Espero que esto ayude.

+0

Agregué esa clave hash en el panel de control, pero el problema todavía está aquí. ¿Debo agregar la clave hash también en fb api? – virusss8

+2

@ virusss8: No necesita agregar el hashkey en su aplicación. Sigue este paso y dime el resultado. Abra el archivo de la clase Util en su facebook-sdk y cambie el 'booleano estático privado ENABLE_LOG = falso' por 'verdadero'. Ahora mantenga su teléfono conectado a su PC de desarrollo y ejecute la aplicación creada utilizando el apk firmado e inicie sesión. Mantenga abierta una ventana de DDMS y vea si genera un error. –

+0

D/Facebook-authorize (25124): Error de inicio de sesión: invalid_key: error de clave de Android. Su clave "********* real * key ************" no coincide con las claves permitidas especificadas en la configuración de su aplicación. Compruebe la configuración de su aplicación en http://www.facebook.com/developers pero nunca he configurado esa clave en ningún lado. ¿Qué clave es esa? – virusss8

4

He trabajado durante dos días & tengo la solución, por fin, este es el MAL manera de obtener la clave hash -

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64 

El manera correcta es escribir estas 3 líneas, una a un tiempo en cmd. Después de la primera línea, se le pedirá que inserte la contraseña del almacén de claves.

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* > [openssl_bin_directory]\debug.txt 
[openssl_bin_directory]\openssl sha1 -binary [openssl_bin_directory]\debug.txt > [openssl_bin_directory]\debug_sha.txt 
[openssl_bin_directory]\openssl base64 -in [openssl_bin_directory]\debug_sha.txt > [openssl_bin_directory]\debug_base64.txt 

Si usted quiere saber más detalles, se describe el DERECHO camino aquí -

http://facebook.stackoverflow.com/questions/13281913/app-is-misconfigured-for-facebook-login-with-release-key-hash

o aquí

Facebook Android Generate Key Hash

+1

¿Por qué publicarías el error en el texto y no en el derecho? Casi lo uso jajaja, pero gracias por el enlace a la derecha – Guardanis

+2

@Cruceo, edité la publicación, puedes dar +1 si te gusta. – Khobaib

+0

GRACIAS acaba de pasar las últimas 3 horas tratando de resolver esto –

1

CONSEGUIRLE clave hash utilizando esta función para ambos (depuración y versión apk) y póngalo en su aplicación en developer.facebook.com/a pps

private void calculateHashKey(String yourPackageName) { 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       yourPackageName, 
       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) { 
     e.printStackTrace(); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
} 

esto me ayuda mucho .. Espero que esto le ayudará también ..

1

he fijado este problema. Después de obtener Key hash usando keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64, me he conectado por primera vez en modo de lanzamiento exitosamente ... Luego, por segunda vez, recibí el error común Tu clave "*********real*key************" no coincide con las teclas permitidas especificadas en la configuración de tu aplicación.

Simplemente use el "*********real*key************" que Facebook da en el mensaje de error Me conecté con éxito ahora en modo de lanzamiento. Así que asegúrese de ingresar esta clave con la misma clave. Las LETRAS I, small(L) i.e (l) te harán tener problemas. Hice dos llaves, en la primera clave que utilicé small(L) i.e (l) y en la segunda clave utilicé I. y las coloqué en la aplicación para desarrolladores.
Está trabajando ahora ...

+0

Ese fue el problema exacto en mi caso ... ¡la única solución que funcionó! y la parte acerca de la pequeña 'L' es correcta, y también la Gran 'I' (que podría parecer una pequeña 'L' en algunas fuentes). –

0

En mi caso, el problema fue que el inicio de sesión del usuario se cancela cuando la aplicación de Facebook está instalada en el dispositivo incluso después de generar las teclas correctas.

Agregué la siguiente línea antes de iniciar sesión y funciona muy bien.

LoginManager.getInstance().logOut(); 
Cuestiones relacionadas