如何在JS SDK Auth请求中指定扩展权限

时间:2010-07-20 16:17:26

标签: facebook

更新更清楚(希望如此:)):

与此页面相关,特别是SSO部分:http://developers.facebook.com/docs/authentication/

你有选择Facebook说要使用facebook连接按钮(无论连接意味着现在Facebook对我来说是灰色的雾)或者只是将你自己的图像作为按钮滚动,然后点击调用FB.Login( )。

所以我尝试了facebook按钮路线,这将我带到一个完整的砖墙。我的意思是我可以让它工作,身份验证,登录,所有这些,但我不知道如何通过按钮传递整个过程的扩展权限:

window.fbAsyncInit = function () {
    FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: true });
    FB.Event.subscribe('auth.sessionChange', function (response) {
    ...rest of code

好的,如何为此通话附加扩展权限?当然,如果使用Login(),你可以轻松地做到这一点,但为什么facebook不显示任何例子,或说明perms参数是否存在于使用该按钮的过程中的位置!

相关链接:http://forum.developers.facebook.com/viewtopic.php?pid=248096#p248096

我甚至不知道为什么他们在这里有那个按钮,当我看起来像大多数人只是在Init中调用Login()时。我假设然后调用Login()仍然在cookie等方面管理SSO?

是否有人使用此按钮或您只是使用FB.Login()?

我在我们自己的托管网站上的iframe中运行这个...没有将代码嵌入到facebook网站本身(我相信它被称为画布吧?)。

2 个答案:

答案 0 :(得分:11)

RTFM。是的,我的意思是友善。

Single Sign-on部分正下方是Account Registration Data部分,我从那里复制粘贴。

<fb:login-button perms="email,user_birthday"></fb:login-button>

答案 1 :(得分:7)

不完全确定你要在这里完成什么。如果你想获得有关你的用户的信息或代表他们在Facebook上采取行动,你需要用户告诉Facebook它可以这样做(这只需要发生一次),这就是你需要调用FB.login作为这里描述:http://developers.facebook.com/docs/reference/javascript/FB.login

FB.login(function(response) {
  if (response.session) {
    if (response.perms) {
      // user is logged in and granted some permissions.
      // perms is a comma separated list of granted permissions
    } else {
      // user is logged in, but did not grant any permissions
    }
  } else {
    // user is not logged in
  }
}, {perms:'read_stream,publish_stream,offline_access'});

他们需要输入密码才能证明他们真正授权您的应用。如果需要扩展权限,FB.login中的第二个参数允许您执行此操作。

如果用户已登录Facebook(例如在另一个标签页中),则无需登录,并且应跳过登录屏幕。如果用户已登录已经授权您的应用程序,则无需调用FB.login。

在决定是否调用FB.login之前,请使用FB.getLoginStatus:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus检查用户的登录状态(和权限)。