3

初回は問題なくログインできます。また、ユーザーが Android アプリケーション内で Facebook を無効にできるオプションがあります。これを選択すると、Facebook のステータスが CLOSED になります。オプションを再度使用すると、API にログインし直すと、コールバック関数内の OPENING でハングします。

私が見つけた例によると、最初の呼び出しは次を使用します

session.openForRead(new Session.OpenRequest(activity).setCallback(statusCallback));

そして2番目の用途

Session.openActiveSession(activity, true, statusCallback);

コールバック関数は次のようになります。

private static class SessionStatusCallback implements Session.StatusCallback {
    // callback when session changes state
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {
            // make request to the /me API
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                // callback after Graph API response with user object
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    if (user != null) {
                        GlobalVars.setUser(user.getName());
                        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GlobalVars.getContext());
                        Editor editor = prefs.edit();
                        editor.putBoolean("facebook", true);
                        editor.commit();
                        System.out.println("facebook logged in");
                    }
                }
            });
        }
        System.out.println("facebook session state callback " + session.getState().toString());
    }
}
4

1 に答える 1

8

正確な問題があるかどうかはわかりませんが、Facebook のセッション状態はSession.openActiveSession(activity, true, statusCallback);. onActivityResult()フラグメント内をオーバーライドしました。これを解決するために私がしたことは、代わりにアクティビティのメソッドをオーバーライドすることでした。

関連する回答: https://stackoverflow.com/a/13888652/782870

于 2013-04-03T04:11:15.917 に答える