首页 > 解决方案 > 使用 Facebook JS SDK 管理权限

问题描述

我有一个我想要选择/取消选择的 fb 权限列表,然后我想用这个逻辑将更改提交给 facebook,只需一个用户操作(单击):

1)登录FB;

2)删除(撤销)所有权限;

3)请求新的(选定的)权限。

<button onclick="changePermissions()">Change permissions</button>

function changePermissions() {
        FB.login((response) => {

            FB.api('/me/permissions', 'DELETE', () => {

                FB.login(() => {}, {
                    scope: 'email,publish_pages', // the new selected permissions
                    auth_type: 'rerequest'
                });
            });
        });
}

步骤1)2)按预期工作,但步骤3)失败。(具有新权限的新登录弹出窗口被浏览器阻止)。Facebook js sdk 说“FB.logion() 必须从按钮事件处理程序中调用”。

如何仅通过一个用户操作(1 单击)来实现此场景。我不想强迫用户与 UI 进行多次交互以更改他的权限?

标签: facebookfacebook-graph-apifacebook-javascript-sdk

解决方案


如果用户已经授权您的应用程序,您可以删除权限 BEFORE FB.loginFB.getLoginStatus无论如何都要重新授权用户。所以第一个 FB.login 不需要,但是删除权限的 API 调用是异步的,这就是浏览器阻止第二个FB.login调用的原因。 只需在 FB.getLoginStatus 之后删除权限,并且只FB.loginchangePermissions函数中执行。

示例FB.getLoginStatushttps ://www.devils-heaven.com/facebook-javascript-sdk-login/


推荐阅读