的时候,这里是我的更新状态代码:Facebook的会话关闭后得到尝试后状态
new Session(context);
Session.setActiveSession(session);
Session.openActiveSession(context);
Log.e("session after setted",Session.getActiveSession().toString());
Request request = Request.newMeRequest(Session.getActiveSession(), new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// If the response is successful
if (Session.getActiveSession().isOpened()) {
if (user != null) {
session = Session.getActiveSession();
postFromAlarm();
Log.e("user","not null");
}else{
postFromAlarm();
Log.e("user","null");
}
} else{
postFromAlarm();
Log.e("not open session",Session.getActiveSession().toString());
Log.e("session","not open");
}
}
});
Log.e("request session",request.getSession().toString());
Request.executeBatchAsync(request);
Log.e("session after setted",Session.getActiveSession().toString());
呈现出良好的,健康的会话,它可用于发布。因为在logcat中,它显示会话是开放的,accesstoken很好,app_id也很好。
,但使用的时候我试图张贴本次会议,在onComplete()
方法,执行这些行:
Log.e("not open session",Session.getActiveSession().toString()); Log.e("session","not open");
并且它表明:
{Session state:CLOSED, token:null, appId:***************** }
是什么错误?我试过没有new Session(context)
,但得到相同的结果。我该怎么办?
你会在代码中的任何地方关闭会话吗? newMeRequest是异步执行的,因此会话可能在其他地方关闭。如果没有,请发布更完整的代码,这个示例不足以显示问题。 –
是的,我已经关闭了会议。但在关闭会话之前,我已将文件中的打开会话保存起来,然后我尝试使用已保存的会话设置活动会话。如果我的过程是错误的,是否有其他选项发送请求与我保存的会话? @MingLi – Shoshi
不要保存会话,也不要重复使用封闭会话,只需创建一个新会话。创建起来很便宜,如果用户已经授权应用程序(您可以检查,因为会话将处于CREATED_TOKEN_LOADED状态),那么您可以在没有任何用户交互的情况下打开它。 –