2012-01-06 20 views
5

estoy tratando de utilizar el Android SDK de Facebook - pero sin suerte. El problema es que la ventana de inicio de sesión de Facebook comienza a cargarse, pero antes de que ocurra algo, desaparece. Este es el comportamiento en un dispositivo real, en el emulador todo es bueno.Android - SDK ventana de usuario de Facebook desaparecer

lo que he hecho:

  1. descargado el SDK de here
  2. añaden los archivos de Java a mi proyecto.
  3. creó una aplicación de Facebook.
  4. Obtuve el valor de Key Hash y actualicé mi aplicación de Facebook.

Pero no puedo conseguir que aparezca la ventana de inicio de sesión. No veo ningún error en la Logcat, sólo esto:

ActivityManager (2698): Inicio: Intención {cmp = com.facebook.katana/.ProxyAuth (tiene extras) ActivityManager (2698): Tratar de lanzamiento com.facebook.katana/.ProxyAuth ActivityManager (2698): Se muestra com.facebook.katana/.ProxyAuth: + 371ms (total + 466ms)

¿Alguna idea?

10X :)

EDIT: Parece la adición de estas líneas de código para la actividad resuelto el problema:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

Got si desde aquí: SO Question

+0

en el proyecto de la biblioteca com.facebook.android, reemplazar todos log.d() declaraciones con log.i(), incluso me había enfrentado a un problema tan mientras que las pruebas en el dispositivo, la pantalla de inicio de sesión desaparición puede deberse a Por muchas razones, me enfrenté a ella debido a SSLException debido a que la fecha del dispositivo era demasiado antigua. –

Respuesta

0

Es posible que desee poner un poco depurar mensajes (log.v()) en cada uno de los eventos de diálogo de Facebook (onComplete, onFacebookError, onError, onCancel). Yo tuve el mismo problema; sin embargo, mi problema estaba relacionado con el hash de la clave, tuve el keyhash incorrecto. Si la herramienta de keytool no le pide una contraseña, le da la clave incorrecta. Con el keyhash incorrecto, obtuve el mismo comportamiento que tú.

Otra cosa podría ser que ya ha iniciado sesión en Facebook en su dispositivo. Por lo tanto, no necesita pedir su permiso. Si ese es el caso, cierre sesión en Facebook, luego ejecute su aplicación.

+0

Agregué mensajes a todos los eventos de diálogo de Facebook, pero ninguno de ellos se muestra. Parece que la última línea del código relevante es: facebook.authorize (esto, PERMISSIONS, new LoginDialogListener()); –

3

Ese error Logcat de com.facebook.katana es de la aplicación para Android Facebook. ¿Está eso instalado en el teléfono? Parece que es así y está por defecto en Single Sign On (SSO)? Trate de hacer su autorización, según las

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener()); 

que evita SSO y obliga a un inicio de sesión de diálogo. Si eso evita su bloqueo, la causa más probable es una falta de coincidencia entre el SDK y la aplicación de Facebook instalada. Tienden a ser bastante exigentes con el trabajo en equipo. Si es así, es probable que tengas que probar varias versiones diferentes antes de encontrar un par estable.

+0

gran solución. En mi aplicación, funciona perfecto. Muchas gracias Troid! –

1

¿Ya instale en el dispositivo facebook aplicación nativa? Porque com.facebook.katana - esto es de la aplicación de Facebook. Podría suceder, porque ya está autenticado por esta aplicación. ¿Qué hago? Yo comento en facebook.java código:

public void authorize(Activity activity, String[] permissions, int activityCode, final  DialogListener listener) { 
    boolean singleSignOnStarted = false; 

    mAuthDialogListener = listener; 

    // Prefer single sign-on, where available. 
    //  if (activityCode >= 0) { 
    //   singleSignOnStarted = startSingleSignOn(activity, mAppId, permissions, activityCode); 
    //  } 
    // Otherwise fall back to traditional dialog. 
    if (!singleSignOnStarted) { 
     startDialogAuth(activity, permissions); 
    } 
} 

También trato de hacer múltiples inicio de sesión y encontrar un problema, cuando AUTH con un usuario/contraseña, trate de añadir nuevo inicio de sesión, de diálogo facebook espectáculo y en el navegador la página de inicio de sesión automático espectáculo y desaparece inmediatamente. Porque se produjo el inicio de sesión con datos previos. Cuando yo en facebook.java: desactivar en iniciarDialogAuth cookies.

private void startDialogAuth(Activity activity, String[] permissions) { 
    Bundle params = new Bundle(); 

    if (permissions.length > 0) { 
     params.putString("scope", TextUtils.join(",", permissions)); 
    } 
    //  CookieSyncManager.createInstance(activity); 
    Util.clearCookies(activity); 

    dialog(activity, LOGIN, params, new DialogListener() { 

     public void onComplete(Bundle values) { 
      // ensure any cookies set by the dialog are saved 
      //    CookieSyncManager.getInstance().sync(); 
      setAccessToken(values.getString(TOKEN)); 
      setAccessExpiresIn(values.getString(EXPIRES)); 
      if (isSessionValid()) { 
       Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login Success! access_token=%s expires=%s", getAccessToken(), getAccessExpires()); 
       mAuthDialogListener.onComplete(values); 
      } 
      else 
       mAuthDialogListener.onFacebookError(new FacebookError("Failed to receive access token.")); 
     } 

     public void onError(DialogError error) { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login failed: %s", error); 
      mAuthDialogListener.onError(error); 
     } 

     public void onFacebookError(FacebookError error) { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login failed: %s", error); 
      mAuthDialogListener.onFacebookError(error); 
     } 

     public void onCancel() { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login canceled"); 
      mAuthDialogListener.onCancel(); 
     } 
    }); 
} 
+0

Mientras escribo el mensaje, Torid me espera :) –

Cuestiones relacionadas