Facebook Apps:其他权限

Sco*_*t C 21 facebook facebook-graph-api

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

稍后,一小部分用户会再次使用该应用程序.以前不想写在墙上的一些人(因此我没有要求发布流)现在想写信给他们的墙.

在用户授权应用程序后,如何申请其他权限?

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

ifa*_*our 19

这就像向新的添加新权限一样简单fb:login-button:

<fb:login-button scope="publish_stream">
  Let me write on your wall!
</fb:login-button>
Run Code Online (Sandbox Code Playgroud)

因此,例如,您在DIV中隐藏了上述内容,如果用户勾选了一个复选框,则会显示DIV并提示新的权限!

一个好的生活的这个例子是关于Facebook的测试控制台:

  1. 单击"登录"以"添加"应用程序
  2. 然后点击 examples
  3. 根据fb.api选择does-like

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

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

SELECT read_stream,offline_access FROM permissions WHERE uid=me()
Run Code Online (Sandbox Code Playgroud)

这将返回如下内容:

[
  {
    "read_stream": 1,
    "offline_access": 0
  }
]
Run Code Online (Sandbox Code Playgroud)

要测试它,只需使用早期发布的测试控制台.

编辑2:
要在没有XFBML或Javascript的情况下自己构建链接,您只需要添加scope带有附加权限的参数(参考):

https://www.facebook.com/dialog/oauth?
     client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream
Run Code Online (Sandbox Code Playgroud)

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

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => "publish_stream"
));
Run Code Online (Sandbox Code Playgroud)