初回は問題なくログインできます。また、ユーザーが 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());
}
}