2012-04-06 205 views
0

我正在使用JS-SDK,我的用户已经授权使用我的Facebook应用程序。如何授予用户权限

现在我的开放图形动作被批准并开始发布。

我的用户正在进入我的网站,JS SDK会自动以FB.getLoginStatus的身份登录状态,并在用户登录Facebook时进行操作。

facebook要求“publish_actions”权限在Facebook上发布操作。因此,我将范围attiribute添加到了我的登录按钮,并带有“publish_actions”值,并且在您单击它时工作正常。

但有一个问题:我直到今天还没有从我的用户那里得到这个权限。所以,如果用户未自动接受JS SDK的此权限,我想打开一个窗口接受此权限。因为系统没有这样做。

方案(详细明确的想法):

1)用户上个星期来到我的网站,并登录按钮授权。

2)我在我的网站上添加了Open Graph的东西,并且昨天将范围attiribute添加到我的登录按钮。

3)用户登录到Facebook。之后,今天来到我的网站。 JS SDK自动授权不会给任何错误,“这个网站上有新的权限”或等等...

所以,我想显示新的auth对话框给这个用户。

+0

根据我的经验,这应该会自动发生。您可以通过取消您对用户帐户的权限并登录到您的应用程序来测试此功能。您应该被提示接受新的权限。 – 2012-04-06 22:11:06

+0

@AlexRockwell正在工作,但请阅读我的情况。 – xecute 2012-04-06 22:42:54

+0

你可以发布你正在做的代码片段吗? – 2012-04-06 23:09:40

回答

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" }); 
    } 
}); 

你也可以给用户发送到身份验证对话框而不是调用的FB.login,这是给你的。 另外,您可以在服务器端以非客户端类似的方式检查权限,这又取决于您。

+0

阻止此代码的弹出窗口阻止程序:/ so,我在我的网站添加了一个按钮“如果您想要更好的体验,请点击此处并授予权限”:/ – xecute 2012-04-06 23:25:34

+1

是的,当然,它在[FB.loging] (http://developers.facebook.com/docs/reference/javascript/FB.login/)文档:“*调用FB.login导致JS SDK试图打开一个弹出窗口。因此,这种方法应该只在用户点击事件后被调用,否则弹出窗口将被大多数浏览器阻止*“。代码只是为了让你朝正确的方向发展。如果它回答你的问题,请接受答案。 – 2012-04-07 08:16:56

+0

我添加了监听器到文档。所以,当用户点击任何地方没有这个权限,它会触发fb.login。问题解决了 :) – xecute 2012-04-18 12:30:51