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);
}