Java Facebook SDK授权可以在手机上使用,但不能在平板电脑上使用

Java Facebook SDK授权可以在手机上使用,但不能在平板电脑上使用,java,android,facebook,Java,Android,Facebook,目前,我正在尝试在我的Android应用程序中实现Facebook SDK。我遵循了官方的教程,至少在我的Galaxy S2上运行了它。我可以授权自己并在墙上留言。但当我在Acer平板电脑上试用时,我发现 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

目前,我正在尝试在我的Android应用程序中实现Facebook SDK。我遵循了官方的教程,至少在我的Galaxy S2上运行了它。我可以授权自己并在墙上留言。但当我在Acer平板电脑上试用时,我发现

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)
我的问题可能与有关,但由于没有有效的答案,我想我还是再试一次

我的代码的重要部分是:

    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...
    }
if(会话!=null){
List permissions=session.getPermissions();
如果(!isSubsetOf(权限、权限)){
this.pendingPublishReauthorization=true;
Session.reauthorizereRequest reauthRequest=新建Session.reauthorizereRequest((活动)\u ctx,权限)。setRequestCode(REAUTH\u活动\u代码);
试一试{
会话。重新授权发布(重新授权请求);
}捕获(不支持操作异常uoe){
uoe.printStackTrace();
Toast.makeText(this.\u ctx,“错误,重新授权失败”,Toast.LENGTH\u LONG.show();
}
返回;
}
等
}
你知道我错过了什么吗?
提前感谢,非常感谢您提供的任何帮助。

这里的问题是您试图在会话未处于打开状态时调用重新授权。仅检查getPermissions()不足以保证会话是打开的。您应该做的是检查会话是否已打开(通过session.isOpen()),如果未打开,请先调用各种打开方法之一。

这里的问题是,您试图在会话未处于打开状态时调用重新授权。仅检查getPermissions()不足以保证会话是打开的。您应该做的是检查会话是否已打开(通过session.isOpen()),如果未打开,请首先调用各种打开方法之一。

我假设您正在执行此操作。我和你有类似的问题。我创建了一个基本活动,它支持发布到提要的逻辑,并在需要时重新授权。然后,在需要该functionnality的活动中,我从这个基本活动继承并使用发布逻辑。我出错是因为我忘记调用super.onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
            ....
     }

这为我解决了问题。

我想你是在跟踪。我和你有类似的问题。我创建了一个基本活动,它支持发布到提要的逻辑,并在需要时重新授权。然后,在需要该functionnality的活动中,我从这个基本活动继承并使用发布逻辑。我出错是因为我忘记调用super.onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
            ....
     }

这为我解决了问题。

我想您必须先检查会话是否已打开,然后再添加:

if(!session.isOpened()){
会话。重新授权发布(重新授权请求);
}


希望我的回答能帮助你……)

我认为您必须先检查会话是否已打开,因此只需添加:

if(!session.isOpened()){
会话。重新授权发布(重新授权请求);
}


希望我的回答能帮助你……)

转到设置-应用程序-选择应用程序-清除缓存-卸载,然后重新安装。或者尝试从平板电脑的默认Facebook应用程序注销。无法正常工作,抱歉。我重新编写了一些代码,现在它可以工作了,但我仍然不确定为什么。现在,如果未安装facebook应用程序,则facebook web登录在授权后会不断重新出现…转到设置-应用程序-选择应用程序-清除缓存-卸载,然后再次安装。或者尝试从平板电脑的默认Facebook应用程序注销。无法正常工作,抱歉。我重新编写了一些代码,现在它可以工作了,但我仍然不确定为什么。现在,如果没有安装facebook应用程序,facebook web登录在授权后会不断重新出现。。。