我正在使用JS-SDK,我的用户已经通过我的Facebook应用程序授权。
现在我的开放图表操作已获批准并开始发布。
我的用户正在进入我的网站,JS SDK会自动获取FB.getLoginStatus的登录状态,并在用户登录Facebook时执行操作。
facebook要求“publish_actions”权限在facebook上发布操作。因此,我使用“publish_actions”值将范围attiribute添加到我的登录按钮,并且当您单击它时它正在工作。
但是有一个问题:我今天没有获得此权限,直到我的用户。因此,如果用户不能自动接受JS SDK的此权限,我想打开一个窗口来接受此权限。因为系统没有这样做。
场景(更明确的想法):
1)用户上周来到我的网站并通过登录按钮授权。
2)我在我的网站上添加了Open Graph的东西,昨天在我的登录按钮上添加了范围attiribute。
3)用户登录Facebook。之后,今天来到我的网站。 JS SDK自动授权不会给“本网站上有新的权限”等等任何错误...
所以,我想向这个用户显示新的身份验证对话框。
答案 0 :(得分:2)
好吧,一旦用户加载您的页面,您可以使用js sdk检查用户授予您应用的权限,如果不包含publish_actions,请让他授予它。
您可以在客户端完全执行此操作,如下所示:
FB.api("me/permissions", function(response) {
if (response && response.data && response.data.lengh == 1 && !("publish_actions" in response.data)) {
FB.login(function(response) {
console.log(response);
}, { scope: "publish_actions" });
}
});
或者您可以将用户发送到auth对话框,而不是调用 FB.login ,这取决于您。 此外,您可以在服务器端以类似的方式检查权限,而不是客户端,这取决于您。