我正在开发一个使用 Facebook 登录的应用程序。在应用程序启动时,调用Session.getActiveSession()
返回 null。我检查会话是否为空,如果是,则运行该方法Session.openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback)
。
我想将该方法中的布尔值设置为 false,因为如果需要,我想将用户发送到自定义登录活动,并将该参数设置为 true 会打开基本登录权限窗口(不需要)。但是当我将参数设置为 false 时,该方法甚至不会触发会话状态更改,也不会触发关联的回调(第三个参数)。如果我将参数设置为 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);
}