2013-06-26 7 views
5

私はHTC Androidを使用すると非常にうまくいく。しかし、FacebookのAPIを使用してSamsung Android 4.2を使用してログインすると、「ログインに失敗しました。このアプリのマーカーに連絡して、1732910をfacebookに発行してください」というトーストメッセージを表示します。Samsung Android 4.2を使用しているときにFacebookのログインが機能しない

!私の問題への解決策を見つけた

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

同じ答えてください。 –

+0

これにはどんな解決策がありますか?私は4.2 +とサムスンS4と同じ問題に直面している。 – Ron

+0

facebook sdkの最新バージョンを使用していることを確認してください。 [こちら](https://developers.facebook.com/android/)から入手して、そこにある基本的なチュートリアルに進むこともできます。 –

答えて

2

。マニフェストのFacebookログインアクティビティからandroid:noHistory="true"を削除してみてください。これは、セッションの認証フローを失ってしまいます。

1

XDAの人々が同じ問題を抱えているようです。

彼らは、あなたがこれらのいずれかを試すことができますことを主張している:

(1)[設定]> [開発者向けのオプションでオプション「の活動を保管しないでください」。それがONの場合、アプリケーションがポップアップを呼び出すと、システムがアプリを終了するので、システムがそれを再起動し、ループが発生します。

(2)Facebook Appをアンインストールすると、アプリにログインしてからFacebookアプリを再インストールできます。

これらの回答がどのように「公式」であるかはわかりませんが、あなたにとっては価値があると思っていました。

出典:ここ http://forum.xda-developers.com/showthread.php?p=43200939http://forum.xda-developers.com/showthread.php?t=2186035

+0

それらを試してみてください。私は自分の問題を解決した解決策を投稿しましたが、それが他の人の問題であるかどうかはわかりません。 – Ron

関連する問題