Autenticación de Facebook trabajando en Emulador, pero no en dispositivo físico

Hey todo el mundo acaba de desarrollar mi primera aplicación Android que se conecta a Facebook e intenta actualizar el estado Sin el cuadro de diálogo, utilizando la API de gráfico. El código de abajo es el código de autorización (que estaba en el propio sitio de desarrollo de fbook) y funcionó bien para mí todo el tiempo, hasta hace poco. Ahora mi aplicación se conecta en multa en mi emulador, pero cuando exporte el archivo APK y lo puso en mi teléfono me da "error de autenticación" ¿Puede alguien explicar esto? Simplemente no me muestra la página de inicio de sesión más, después de que creé Un nuevo almacén de claves y hashkey Y actualizó esa hashkey en mi página de aplicación de dev en facebook como de costumbre.

Creo que es debido a la keyhash etc, pero no entiendo que lo suficientemente bien para averiguar lo que está mal. Lo que hago es, haga clic en exportar, la aplicación, a continuación, crear un nuevo almacén de claves (la primera vez, de lo contrario, uso keystore existente), a continuación, encontrar mi hashkey utilizando "keytool exportcert", etc como mostrar en el sitio dev dev. Entonces entro esa hashkey en la aplicación en mi cuenta de Facebook. Pero a veces incluso cuando la contraseña del keystore es correcta dice que el "formato del keystore" es diferente, aunque lo utilicé antes de la misma app! Entonces tengo que crear un nuevo almacén de claves, y exportcert de nuevo y todo eso es un dolor! ¿Debe haber una manera más fácil?

¿Puede alguien explicar cómo funciona la hashkey para aplicaciones de Facebook también?

¡Gracias por adelantado!

Mi código de autenticación:

public void login() { facebook.authorize(this,new String[] { "email", "read_stream", "publish_stream"}, new DialogListener(){ int fbcheck=0; @Override public void onComplete(Bundle values) { fbcheck=1; facebookauthcheck(fbcheck); } @Override public void onFacebookError(FacebookError error) { fbcheck=0; facebookauthcheck(fbcheck); } @Override public void onError(DialogError e) { fbcheck=0; facebookauthcheck(fbcheck); } @Override public void onCancel() { fbcheck=2; facebookauthcheck(fbcheck); } }); } public void facebookauthcheck(int fbcheck) { if (fbcheck == 0) { Toast.makeText(this, "Authentication Error", Toast.LENGTH_LONG).show(); } else if (fbcheck==1) { Toast.makeText(this, "Authenticated", Toast.LENGTH_LONG).show(); } else Toast.makeText(this, "Authentication Cancelled", Toast.LENGTH_LONG).show(); } 

Sí, tuve este problema,

Funcionó bien en el emulador, funcionó bien en mi teléfono dev, pero no en el teléfono de los usuarios de prueba.

Tiene que ver con la aplicación de Facebook y SSO.

Tener una lectura de esto: http://sean.lyn.ch/2011/07/android-the-facebook-sdk-sso-and-you/

Tiene 3 soluciones.

No pude conseguir SSO para trabajar así que fui para la opción dos, (opt fuera de SSO!) Esto se hace por:

  facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, this); 

Si desea solucionarlo y obtener SSO para trabajar:

Genere correctamente su clave hash para el certificado debug apk. (Detallado en el enlace anterior).

Árbitro:

Correspondientes SO Pregunta

Estoy utilizando el inicio de sesión de facebook con fragmentos (por favor, reemplaza 'actividad') por 'esto':

  private void loginToFacebook() { mPrefs = activity.getPreferences(Context.MODE_PRIVATE); facebook = new Facebook(APP_ID); accessToken = mPrefs.getString("access_token", null); long expires = mPrefs.getLong("access_expires", 0); if (accessToken != null) { facebook.setAccessToken(accessToken); } if (expires != 0) { facebook.setAccessExpires(expires); } if (!facebook.isSessionValid()) { facebook.authorize(activity, new String[] {"publish_stream"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() { public void onFacebookError(FacebookError arg0) { // TODO Auto-generated method stub } public void onError(DialogError arg0) { // TODO Auto-generated method stub } public void onComplete(Bundle arg0) { SharedPreferences.Editor editor = mPrefs.edit(); editor.putString("access_token", facebook.getAccessToken()); editor.putLong("access_expires", facebook.getAccessExpires()); editor.commit(); uploadPhoto(facebook, bitmap, null); // calling another method to upload an image to FB after logging in.. } public void onCancel() { // TODO Auto-generated method stub } }); } } 
  • ¿Cómo crear un cliente de chat XMPP para Facebook?
  • Buscando ejemplos de SDK en Android de Facebook
  • Compartir en Facebook en android (como twitter)
  • La verificación instantánea de Facebook no está verificando el número de móvil a través de la aplicación de Facebook
  • No se pudo encontrar información sobre el proveedor de com.facebook.katana.provider.AttributionIdProvider
  • Aplicación para Android de Facebook: expiración de token de acceso (expires_in) siempre es 0
  • se ha intentado solicitar nuevos permisos para una sesión que tiene una solicitud pendiente
  • Android Facebook Graph api información básica que solicita
  • Compartir imágenes y texto con Facebook en Android
  • ¡La instalación de FriendPickerSample falló debido a un archivo APK no válido!
  • Actividad de Facebook no se carga correctamente en facebook-sdk 4.4.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.