Facebook SDK 3.0.1 で次のシナリオがあります。ユーザーが最初にログインして「FB ログイン」を選択すると、SSO が開始され、新しいセッションが開かれ、すべてが正常に機能します。しかし、その後、ユーザーがアプリを閉じて再度起動すると、最後に開いているセッションを取得する方法がわかりません。現在、新しいセッションを開いているときに、ユーザーに FB 進行状況バーが再び表示されます (接続されている間)。再度 FB を実行しますが、ユーザーは前回の実行で既に FB を承認しています)。この操作をスキップする方法を知っている人はいますか?
編集1:
これは私がセッションを取得する方法です:
public void tryRetrievFacebookSession() {
Session session = Session.getActiveSession();
if (session != null && session.isOpened())
return;
session = Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
MobliLog.d("SplashScreen", "Inside call() with session with state: " + session.getState());
// onSessionStateChanged(session, state, exception);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session session = Session.getActiveSession();
if (session != null)
session.onActivityResult(this, requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
セッションは通常、LoginButton から、または次の行で作成されます。
session = Session.getActiveSession();
if (session.getState().isClosed())
session = new Session(this);
if (session.isOpened()) {
onAuthenticationEndListener.onSuccessfullAuthentication();
return;
} else {
this.onFacebookAuthenticationEndListener = onAuthenticationEndListener;
Session.setActiveSession(session);
session.openForRead(new Session.OpenRequest(SocNetwksCompatScreen.this).setCallback(null));
return;
}
情報 1:
最初のセッションセッションを行っているとき = Session.getActiveSession(); sso 認証後のログインで、セッションの状態が OPENED ではなく CLOSED になっている
情報 2: uiHelper を使用しており、次のように初期化します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
twitter = SocialPluginsUtils.getTwitterClient();
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
}
今、私は Session.getActiveSession(); を実行した後にそれを知っています。セッション状態は OPENED になり、その後 OPEN になり、uiHelper のコールバックが呼び出されます。私のコードでは、状態は CLOSED または CLOSED_LOGIN_FAILED または CREATED (安定していない理由がわからない) であり、残りは発生しません