4

Facebook Android sdk3.0 を使用しています。ユーザーがFacebook経由で正常にログインした後に何かをしたい. onActivityResultの内部またはonComplete関数内に実装する必要がありSession.StatusCallbackますか?

実際、両者の間に違いはありますか?Session.StatusCallback onComplete が常に後に呼び出されると仮定できますonActivityResultか?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    // Do Something Here?
}


private class SessionStatusCallback implements Session.StatusCallback {

    @Override
    public void call(Session session, SessionState state, Exception exception) {

        if (session.isOpened()) {
             // Or Do Something Here?
        }
    }
}
4

1 に答える 1

5

簡単に言えば、両方を行う必要があります。

onActivityResult が必要なのは、SDK がユーザーが条件と許可に同意したことを確認するために、Facebook SDK に情報を渡す必要があるためです。SDK がすべてを確認したら、新しい状態または発生したエラーで SessionStatusCallback.call を呼び出します。

新しいセッションを開くと、最初に OPENING 状態に遷移し (コールバックが呼び出されます)、次に SSO が実行され、SSO が完了すると onActivityResult が呼び出されます (この時点で session. onActivityResult または uiLifecycleHelper.onActivityResult)、セッションは OPENED 状態に移行し、コールバックが再度呼び出されます。

于 2012-12-18T19:10:42.113 に答える