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?
- No se puede recuperar el token de acceso para Facebook en un dispositivo real
- Cómo obtener el número de teléfono de usuario de Facebook en android
- ¿Cómo obtener el token de acceso actual en Facebook Android SDK V4?
- Protección de las claves de twitter en Android
- Enlace profundo con aplicaciones de Android y iOS en Facebook
¿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(); }
- Práctica recomendada para la autorización / acción de Facebook en dispositivos móviles sin complementos
- ¿Integración de Facebook en android?
- NPE en Facebook SDK 4.10: Intenta invocar el método de interfaz 'java.lang.Object com.facebook.inject.Lazy.get ()' en una referencia de objeto nulo
- Facebook Slide menu-slide a la derecha en android?
- Android WebView con inicio de sesión en Facebook
- Aplicación que se bloquea sólo en dispositivos lollipop
- Facebook Android SDK cerrar sesión
- Codificación multipart / form-data de Android para la foto de Facebook
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 } }); } }
- ¿Cuáles son las ventajas y desventajas de ejecutar un servicio en un proceso diferente?
- Android NDK – construcción de TessTwo (Fork de Tesseract Tools para Android) – ndk-build falla