我有一个要选择/取消选择的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多次交互以更改其权限吗?
答案 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/