2016-10-15 20 views
1

私は最新のFacebook Android SDKを使用してユーザーを認証していますが、この問題が発生しています。AndroidのFacebookログインが処理されていません

カスタムActivityResultハンドラシステムを使用してルートアクティビティを設定しています(基本的にフラグメントは、特定の結果のActivityResultHandlersを登録して削除することができ、フラグメント内の相互アクティビティ要求の結果を処理します)。私はFacebookのCallbackManager、とそれはSDKのドキュメントに記述されている方法、これを拡大してきました:私の活動で

を、私はこれを持っている:

@Override 
void onCreate(Bundle bundle) { 
    [...] 
    setContentView(R.layout.activity); 

    FacebookSdk.sdkInitialize(getApplicationContext()); 
    facebookCallbackManager = CallbackManager.Factory.create(); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    for (Map.Entry<Integer, ActivityResultHandler> entry : activityResultHandlers.entrySet()) { 
     if (entry.getKey() == requestCode) 
      entry.getValue().onActivityResultCustom(requestCode, resultCode, data); 
    } 

    super.onActivityResult(requestCode, resultCode, data); 
    facebookCallbackManager.onActivityResult(requestCode, resultCode, data); 
} 

そして、私のフラグメントで

、私は次の操作を行います。

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    [...] 
    LoginManager.getInstance().registerCallback(
     ((MainActivity)getActivity()).getFacebookCallbackManager(), 
     new FacebookCallback<LoginResult>() { [...] } 
    ); 
} 

次に、ボタンを押すとLoginManagerが呼び出されます(私はカスタムグラフィックスを使用しているため、残念ながらFacebookLoginButtonは問題ありません)。

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email","user_friends","public_profile")); 

さて、この部分は正常に動作し、私はfacebookCallbackManager.onActivityResult()メソッドが呼び出されたデバッガで見ることができます。しかし、内部では、SDKが全く異なる要求コード(129742)を返す間、LoginManagerが特定の応答コード(64206と言う)に登録されていることがわかり、LoginManagerコールバックは処理されません。

私はここで間違っていますか?

答えて

0

この部分を移動します。 setContentViewの前にFacebook SDKを初期化する必要があります。

setContentView(R.layout.activity); 
FacebookSdk.sdkInitialize(getApplicationContext()); 

この

FacebookSdk.sdkInitialize(getApplicationContext()); 
setContentView(R.layout.activity); 
+0

助けになりません。コールバックはまだ処理されていません。 – fonix232

0

にとてもソリューションは非常に簡単だった - 断片自体に処理全体を移動し、本体のみの活動にSDKの初期化を行います。

関連する問題