Session.openActiveSession仅在Facebook Android SDK中调用OPENING
我正在尝试使用Facebook Android SDK登录Facebook,但是,状态回调仅在会话状态下启动一次。之后,一个Facebook登录活动出现了一小会儿,没有任何内容(我知道它就是那个活动,因为它的标题是我在strings.xml中为Session.openActiveSession仅在Facebook Android SDK中调用OPENING,android,facebook,facebook-android-sdk,Android,Facebook,Facebook Android Sdk,我正在尝试使用Facebook Android SDK登录Facebook,但是,状态回调仅在会话状态下启动一次。之后,一个Facebook登录活动出现了一小会儿,没有任何内容(我知道它就是那个活动,因为它的标题是我在strings.xml中为title\u Facebook\u login设置的)。没有其他回调被激发,没有异常,没有崩溃。它只是在我最初的活动中永远等待。这是我的密码: Session.openActiveSession(parent, true, new Session.Sta
title\u Facebook\u login
设置的)。没有其他回调被激发,没有异常,没有崩溃。它只是在我最初的活动中永远等待。这是我的密码:
Session.openActiveSession(parent, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if(state == SessionState.OPENED){
String accessToken = session.getAccessToken();
}
}
});
为什么
SessionState.OPENED
(或CREATED,甚至CLOSED)的回调不会启动,而只会打开?您需要调用onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
所以当登录完成时。它进入相同的活动并调用状态回调,会话状态为打开
初始化UiLifecycleHelper
private UiLifecycleHelper uiHelper;
在oncreate中,需要在setContentView之前调用
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
并且需要在
@Override
protected void onResume() {
super.onResume();
uiHelper.onResume();
}
@Override
protected void onPause() {
super.onPause();
uiHelper.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
您是否在onActivity结果代码中调用会话?否,它在
onCreate
上。是否应在活动上启用
?我对Android非常陌生,所以请原谅我,如果这是一些琐碎的事情。你遵循facebook教程了吗?不完全是。。我不认为会话状态的触发与视图有关。。。但很明显我错了:)是的,这就成功了。我没有在活动中重写onActivityResult方法。我这样做了,它启动了并打开了。谢谢,这有助于登录…一次…然后按钮变为注销按钮-我按下了它,我注销了…但随后按钮变回登录,按下它,我又注销了…我做错了什么?