使用Facebook JS SDK管理权限

时间:2019-09-16 07:24:28

标签: facebook facebook-graph-api facebook-javascript-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多次交互以更改其权限吗?

1 个答案:

答案 0 :(得分:1)

如果用户已经授权了您的应用,则可以在FB.login之前删除许可。 FB.getLoginStatus仍会重新授权用户。因此,不需要第一个FB.login,但是用于删除权限的API调用是异步的,这就是为什么浏览器阻止第二个FB.login调用的原因。 仅在FB.getLoginStatus之后删除权限,并且仅在FB.login函数中执行changePermissions

带有FB.getLoginStatus的示例:https://www.devils-heaven.com/facebook-javascript-sdk-login/