2013-06-26 10 views
5

Quando uso HTC Android, funziona molto bene. Tuttavia, quando uso l'API di Facebook per accedere utilizzando Samsung Android 4.2, mostro un messaggio di Toast come "login fallito, contatta l'indicatore di questa app e chiedi loro di emettere 1732910 su facebook"Facebook Login non funziona quando uso Samsung Android 4.2

Per favore aiutami a sistemarlo !

public class FacebookLogin { 
/* variable Facebook */ 
private static final String FACEBOOK_APPID = "578073962236765"; 
private FacebookConnector facebookConnector; 
private final Handler mFacebookHandler = new Handler(); 
ActivityBase activity; 
Request.GraphUserCallback userCallback; 
LoginService.OnSwimLogedInEvents swimLoginCallBack; 
LoginService loginService; 
Dialog changeDialog; 
LoadingDialog loadingDialog; 

public FacebookLogin(ActivityBase activity, Request.GraphUserCallback userCallback, LoginService.OnSwimLogedInEvents swimLoginCallBack) { 
    this.activity = activity; 
    this.loadingDialog = new LoadingDialog(); 
    this.userCallback = userCallback; 
    this.swimLoginCallBack = swimLoginCallBack; 
    this.loginService = new LoginService(activity); 
    this.facebookConnector = new FacebookConnector(FACEBOOK_APPID, 
      activity, activity, new String[]{ 
      "publish_stream", "email", "user_birthday", "read_stream", "offline_access"}); 
} 

public void login() { 
    Session.initializeStaticContext(activity); 
    if (facebookConnector.getFacebook().isSessionValid()) { 
     facebookConnector.getFacebook().getSession() 
       .closeAndClearTokenInformation(); 
    } 

    AuthListener listener = new AuthListener() { 
     @Override 
     public void onAuthSucceed() { 
      doLogin(); 
     } 

     @Override 
     public void onAuthFail(String error) { 
      //(new MessageAlert()).showDialog("Facebook authetication fail\r\nError:" + error, activity); 
     } 
    }; 
    SessionEvents.addAuthListener(listener); 

    facebookConnector.login(); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); 
} 

private void doLogin() { 
    AsyncTaskBase<Void, Void, Void> t = new AsyncTaskBase<Void, Void, Void>(
      activity) { 
     @Override 
     protected Void doInBackground(Void... params) { 
      mFacebookHandler.post(facebookUserInfoRunner); 
      return super.doInBackground(params); 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
     } 
    }; 
    t.execute(); 
} 

final Runnable facebookUserInfoRunner = new Runnable() { 
    @Override 
    public void run() { 
     loadingDialog.showDialogLoading(activity); 
     Request.executeMeRequestAsync(facebookConnector.getFacebook() 
       .getSession(), new Request.GraphUserCallback() { 

      @Override 
      public void onCompleted(GraphUser user, Response response) { 
       SwimAccount currentAccount = ((SwimApp) activity.getApplication()).getCurrentAccount(); 
       currentAccount.setAvatarUrl("https://graph.facebook.com/" + user.getId() + "/picture"); 
       currentAccount.setIsLogin(true); 
       currentAccount.setFirstName(user.getFirstName()); 
       currentAccount.setLastName(user.getLastName()); 
       currentAccount.setStringId(user.getId()); 
       currentAccount.setAccountType("facebook"); 
       currentAccount.setEmail((String) response.getGraphObject().getProperty("email")); 
       currentAccount.setBirthdate(user.getBirthday()); 
       currentAccount.setGender((String) response.getGraphObject().getProperty("gender")); 
       if (userCallback != null) { 
        userCallback.onCompleted(user, response); 
       } 

       loginService.login(currentAccount.getEmail(), "", currentAccount.getAccountType(), currentAccount.getStringId(), swimLoginCallBack); 
       //changeDialog.dismiss(); 
      } 
     }); 
    } 
}; 

}

+0

stesso qui Si prega di rispondere. –

+0

Qualche soluzione per questo? Sto incontrando lo stesso problema con un Samsung S4 con 4.2+. – Ron

+0

Assicurati di utilizzare l'ultima versione di Facebook sdk. Puoi ottenerlo da [qui] (https://developers.facebook.com/android/) e anche seguire le esercitazioni di base lì. –

risposta

2

trovato una soluzione al mio problema. Prova a eliminare lo android:noHistory="true" dall'attività di accesso di Facebook nel tuo manifest. Questo ha a che fare con il flusso di autenticazione della sessione.

1

Sembra che le persone su XDA abbiano avuto lo stesso problema.

Essi affermano che si può provare uno di questi:

(1) "Non mantenere le attività" opzione Impostazioni> Opzioni sviluppatore. Se è attivo, quando un'app chiama un popup, il sistema chiude l'app, quindi il sistema lo riavvia ... e lì viene il tuo ciclo.

(2) Se si disinstalla l'app di Facebook, è quindi possibile accedere tramite l'app e quindi reinstallare l'app di Facebook.

Non sono sicuro di come siano "ufficiali" queste risposte, ma ho pensato che potesse valere la pena.

Fonti: http://forum.xda-developers.com/showthread.php?p=43200939 e http://forum.xda-developers.com/showthread.php?t=2186035

+0

Provato e loro non hanno aiutato. Ho pubblicato la mia soluzione (che risolveva il mio problema), ma non sono sicuro se causerà i problemi degli altri. – Ron

Problemi correlati