2011-02-08 182 views
21

我有一个可用的Facebook应用程序,大多数用户只会使用一次。通过Facebook工作流程,用户可以指出他们是否希望自己的墙被写入。基于此,我要么要求获得publish_stream权限。Facebook应用程序:其他权限

稍后,一小部分用户会回来并再次使用该应用。一些以前不想写信给墙壁的人(因此我没有要求发布publish_stream)现在想写信给他们的墙。

如何在用户已经授权应用程序后申请额外的权限?

同样,如何查询用户以列出他们已授予的权限?

回答

19

这是因为添加了新的权限到一个新的fb:login-button简单:

<fb:login-button scope="publish_stream"> 
    Let me write on your wall! 
</fb:login-button> 

因此,例如,您在上面藏在一个DIV如果用户勾选您展示DIV复选框,并提示新允许!

一个很好的现场例子是在Facebook Test Console

  1. 键登录 “增加” 应用
  2. 然后在examples
  3. 单击在fb.api选择does-like

即使在连接到应用程序后,您仍可以看到离子(测试控制台应用程序),你可以实际上有另一个登录按钮来提示用户!

编辑:
要检查用户是否授权您的应用程序的权限,只需要使用这个FQL:

SELECT read_stream,offline_access FROM permissions WHERE uid=me() 

这将返回类似:

[ 
    { 
    "read_stream": 1, 
    "offline_access": 0 
    } 
] 

为了测试它,只需使用早期发布的测试控制台即可。

编辑2:
要自己构建的链接,而不XFBML或Javascript,你只需要添加scope参数与附加烫发(reference):

https://www.facebook.com/dialog/oauth? 
    client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream 

或者,如果您使用的是PHP-SDK

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => "publish_stream" 
)); 
+1

我看到您使用FBML生成登录按钮。什么时候使用PHP SDK和oauth_redirect方法?这就是它不尊重额外权限的地方。 –

+0

@ScottC:更新了我的答案。 – ifaour

0

我前几天看着这个!如果您通过http://developers.facebook.com/docs/authentication阅读,有几种不同的方式显示一个小的弹出框来请求额外的权限。

我不确定这是如何与Facebook应用程序一起工作的,但是我知道在使用Facebook Connect的网站上,如果您尝试请求用户已经接受的权限,那么该页面会自动重定向回redirect_url你设置。