首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook SDK授权可以在手机上使用,但不能在平板电脑上使用

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

Stack Overflow用户
提问于 2012-11-19 18:36:51
回答 3查看 1.4K关注 0票数 1

目前,我正在尝试在我的Android应用程序中实现Facebook SDK。我遵循了官方教程,并让它工作,至少在我的Galaxy S2上。我可以授权自己并将消息发布到我的墙上。但当我在我的宏碁平板电脑上尝试它时,我得到了

代码语言:javascript
复制
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有关,但由于没有有效的答案,我想我会再试一次。

我的代码的重要部分是:

代码语言:javascript
复制
    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...
    }

你知道我错过了什么吗?提前感谢,任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2012-11-20 05:19:36

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-20 19:28:35

我想你是在跟踪https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/吧。我和你有类似的问题。我创建了一个基本活动,它包含了发布到提要和重新授权(如果需要)的逻辑。然后,在需要该函数的活动中,我从这个基本活动继承并使用发布逻辑。我出现这个错误是因为我忘了调用super.onActivityResult

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
            ....
     }

这为我解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2013-02-26 20:20:40

我认为你必须在之前检查会话是否打开,所以只需添加:

if(!session.isOpened()){ session.reauthorizeForPublish(reauthRequest);

}

希望我的回答能对你有所帮助。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13452040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档