目前,我正在尝试在我的Android应用程序中实现Facebook SDK。我遵循了官方教程,并让它工作,至少在我的Galaxy S2上。我可以授权自己并将消息发布到我的墙上。但当我在我的宏碁平板电脑上尝试它时,我得到了
11-19 11:15:54.160: W/System.err(7224): java.lang.UnsupportedOperationException: Session: an attempt was made to reauthorize a session that is not currently open.
11-19 11:15:54.160: W/System.err(7224): at com.facebook.Session.reauthorize(Session.java:1088)
11-19 11:15:54.160: W/System.err(7224): at com.facebook.Session.reauthorizeForPublish(Session.java:542)
11-19 11:15:54.160: W/System.err(7224): at de.lochmann.unnuetze.fakten.FacebookConnect.postToWall(FacebookConnect.java:199)我的问题可能与android facebook sdk - Session: an attempt was made to reauthorize a session that has a pending request有关,但由于没有有效的答案,我想我会再试一次。
我的代码的重要部分是:
if (session != null){
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
this.pendingPublishReauthorization = true;
Session.ReauthorizeRequest reauthRequest = new Session.ReauthorizeRequest((Activity) _ctx, PERMISSIONS).setRequestCode(REAUTH_ACTIVITY_CODE);
try {
session.reauthorizeForPublish(reauthRequest);
} catch(UnsupportedOperationException uoe) {
uoe.printStackTrace();
Toast.makeText(this._ctx, "Error, Reauthorization failed",Toast.LENGTH_LONG).show();
}
return;
}
etc...
}你知道我错过了什么吗?提前感谢,任何帮助都是非常感谢的。
发布于 2012-11-20 05:19:36
这里的问题是,当会话未处于打开状态时,您正在尝试调用reauthorize。仅仅检查getPermissions()不足以保证会话是打开的。您应该做的是检查会话是否打开(通过session.isOpen()),如果没有,首先调用各种打开方法之一。
发布于 2012-11-20 19:28:35
我想你是在跟踪https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/吧。我和你有类似的问题。我创建了一个基本活动,它包含了发布到提要和重新授权(如果需要)的逻辑。然后,在需要该函数的活动中,我从这个基本活动继承并使用发布逻辑。我出现这个错误是因为我忘了调用super.onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
....
}这为我解决了这个问题。
发布于 2013-02-26 20:20:40
我认为你必须在之前检查会话是否打开,所以只需添加:
if(!session.isOpened()){ session.reauthorizeForPublish(reauthRequest);
}
希望我的回答能对你有所帮助。:)
https://stackoverflow.com/questions/13452040
复制相似问题