Facebook SDK v3.5.2 - 从关闭的会话中请求权限

Posted

技术标签:

【中文标题】Facebook SDK v3.5.2 - 从关闭的会话中请求权限【英文标题】:Facebook SDK v3.5.2 - Request permissions from a closed session 【发布时间】:2013-11-19 17:03:46 【问题描述】:

当用户点击取消按钮时,它会关闭 facebook 会话。

Facebook 权限请求对话框:http://imgur.com/2PiYGrK

我正在尝试从用户在 Facebook 权限请求对话框中点击“取消”时显然已关闭的会话请求权限。当我尝试在没有 requestNewReadPermissions 的情况下打开 ActiveSession 时,只请求基本权限,但是当我这样做时,我收到此错误:

E/androidRuntime(12619): java.lang.UnsupportedOperationException:Session: 尝试为已关闭的会话请求新权限

以下代码取自 Facebook SDK v3.5.2 LoginUsingActivityActivity.java 示例,我只是添加了:

Session.NewPermissionsRequest request = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewReadPermissions(request);

代码如下:

private static final List<String> PERMISSIONS = Arrays.asList("user_birthday", "user_friends","user_hometown","user_location","email");

private void onClickLogin() 
        Session session = Session.getActiveSession();
        if (!session.isOpened() && !session.isClosed()) 
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
         else 
            Session.openActiveSession(this, true, statusCallback);
            Session.NewPermissionsRequest request = new Session.NewPermissionsRequest(this, PERMISSIONS);
            session.requestNewReadPermissions(request);
        
    

我正在寻找解决方案,显然我必须销毁当前会话并创建一个新会话。这行得通,但我认为这是一个糟糕的代码。还有另一种方法可以重新打开会话并请求新权限吗?

private void onClickLogin() 
        Session session = Session.getActiveSession();
        if (!session.isOpened() && !session.isClosed()) 
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
         else 
            session.closeAndClearTokenInformation();
            session = null; 
            session = new Session(this);

            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
        
    

【问题讨论】:

【参考方案1】:

我必须做很多变通方法才能做到这一点,我不建议你继续走这条路,新的 SDK 有一些不完美的回调,但它们会为你工作正在努力实现:

https://developers.facebook.com/docs/android/upgrading-4.x

只需按照这些指南进行更新,您就会看到改进的 SDK 体验、更少的代码、更少的错误,以及更好地控制回调。

【讨论】:

以上是关于Facebook SDK v3.5.2 - 从关闭的会话中请求权限的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK iOS - 用户照片不会在发布版本中检索,但在调试版本中可以完美运行。 [关闭]

facebook 登录 Android 后应用程序关闭(Facebook SDK 版本 4.6.0)?

适用于 Windows 移动设备的 Facebook SDK [关闭]

如何使用 Facebook SDK 3.1 使用弹出视图登录 Facebook,而不是通过 safari? [关闭]

Facebook SDK - iOS6 登录弹出窗口无法关闭

使用适用于 Android 的 Facebook Unity SDK 登录 facebook 时应用程序强制关闭