使用 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/
我有一个我想要 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/