android - 如何在不注销的情况下请求新的 Facebook 权限

标签 android facebook-android-sdk android-simple-facebook

我正在我的应用程序中集成 facebook 登录和发布提要。为此,我正在使用 Android Simple Facebook

我实现了登录流程,然后我致力于发布流程。为此,我想执行以下操作:

当用户在我的应用程序中点击分享到 facebook 按钮时,我不想直接发布但我想获得发布权限以便稍后发布(类似于 instagram,他们首先只获得权限然后他们会在您添加照片时发布)。

为此,我这样做了:

if (mSimpleFacebook.isLogin()) {
    //The user is logged in so we proceed
    if (mSimpleFacebook.getGrantedPermissions().contains(
        Permission.PUBLISH_ACTION.getValue())) {
        hasPermission = true;
    } else {
        //we don't have permission we request it.
        mSimpleFacebook.requestNewPermissions(
            SocialUtilities.getFacebookPublishPermissions(), true,
            newPermissionListener);
    }
}

然而,即使我已经登录并有一个 session ,我也会提示我在获得许可之前再次登录。我查看了 Simple Facebook 库的代码,看起来他正在注销然后再次登录,登录后他请求新权限。

我想问一下,为什么要这样做?我们不能只请求新权限而不注销然后再次登录(类似于 instagram)吗?在库中覆盖该行为是不可能的,因为 SessionManager 是私有(private)的且不可访问。

那么有没有一种方法可以在不注销的情况下请求新的权限并强制用户再次登录,使用该库?还是我必须将其搁置一旁,使用原生 Facebook SDK 从头开始​​实现所有内容?

非常感谢您对此事的任何帮助或澄清

编辑: 为了澄清。 在 facebook SDK 中,您可以请求新的权限,用户将看到新的权限屏幕以接受。这类似于 instagram 我对此很满意,这就是我想要的。但我想知道为什么 Simple Facebook 库在这样做之前强制注销,有没有办法覆盖它,或者我是否必须停止使用该库并仅使用 native facebook SDK 重新实现所有内容?谢谢

最佳答案

在最新的FB SDK中,Session类已经被移除。所以这是等效的工作代码

LoginManager.getInstance().logInWithReadPermissions(
    fragmentOrActivity,
    Arrays.asList("email"));

引用:https://developers.facebook.com/docs/facebook-login/android/permissions

关于android - 如何在不注销的情况下请求新的 Facebook 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960454/

相关文章:

android - Facebook 从我的 android 应用程序上传对话框

android - 未找到名称为 'default' 的配置

android - 如何以编程方式获取 CPU 使用率(使用内核频率)

java - 在 OSMDroid for Android 中旋转标记?

android - Session.openActiveSession 仅在 Facebook Android SDK 中调用 OPENING

android - Facebook Android SDK Session openForPublish 不创建新 session

android - 如何使用 Facebook Android API v4 检测注销事件?

java - 调用 getFriends 时抛出异常

android - 无法选择免费还是付费Android应用

android - Android Studio中工具栏的预览问题