0

Facebookログインを使用するアプリに取り組んでいます。アプリの起動時に、呼び出すとSession.getActiveSession()null が返されます。セッションが null かどうかを確認し、null の場合はメソッドを実行しますSession.openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback)

必要に応じてカスタムログインアクティビティにユーザーを送信したいので、そのメソッドのブール値を false に設定したままにし、そのパラメーターを true に設定すると、基本的なログイン許可ウィンドウが表示されます (望ましくない)。しかし、パラメーターを false に設定すると、メソッドはセッション状態の変更をトリガーすることさえせず、関連するコールバック (3 番目のパラメーター) もトリガーしません。パラメータを true に設定し、その後のダイアログから戻ると、コールバックがトリガーされます。

更新: 目的はSession、標準の LoginUi を使用せずにオブジェクトを初期化することです。考えられることはすべて試しましたが、セッションを初期化するものは何もありません。Activityユーザーがログインしていない場合は、標準がある別の場所に変更したいと考えていますLoginButton

私が使用しているコードは次のとおりです。

@Override
public void onCreate(Bundle savedInstanceState) {

    Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            Log.i("MainActivity", "calling session callback");
            onSessionStateChange(session, state, exception);
        }
    };
    session = Session.getActiveSession();
    if(session==null){
        Log.i("MainActivity", "session is null");
        Session.openActiveSession(this, false, callback);
    }
    else{
        if(session.isClosed()){
            Log.i("MainActivity", "session is closed");
            startActivityForResult(new Intent("<custom login activity>"), LOGIN_REQUEST);
        }
        else if(session.isOpened()){
            Log.i("MainActivity", "session is opened");
            initializeActivity();
        }
    }
    uiHelper = new UiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);
}
4

2 に答える 2

0

あなたの中でこれを試してくださいonCreate()

 Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(activity, null, callback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(activity);
        }
        Session.setActiveSession(session);
    }

だから、今Session.StatusCallbackはいつも呼ばれています....

于 2013-06-01T05:17:23.057 に答える