使用 Facebook JS SDK 管理权限

Manage permissions with Facebook JS SDK

我有一个我想要 select / deselect 的 fb 权限列表,然后我想用这个逻辑 只有一个用户提交更改到 facebook动作(一次点击):

1)登录FB;

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

3) 请求新的(selected)权限。

<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() must be called from button event handler"。

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

如果用户已经授权了您的应用程序,您可以删除 FB.login 之前的权限。 FB.getLoginStatus 重新授权用户。所以第一个 FB.login 不需要,但是删除权限的 API 调用是异步的,这就是浏览器阻止第二个 FB.login 调用的原因。 直接删除FB.getLoginStatus后的权限,只在changePermissions函数中做FB.login

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