Facebook OAuthException:"用户尚未授权应用程序执行此操作"

7 php facebook oauth

使用Facebook PHP SDK,当我尝试发布状态更新时,我收到以下错误:

致命错误:未捕获OAuthException:(#200)用户尚未授权应用程序执行此操作

这些是我采取的步骤:

  1. 获取代码:

    https://graph.facebook.com/oauth/authorize?client_id=FB_APP_ID&redirect_uri=REDIRECT_URI
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取访问令牌:

    https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&code=CODE&client_secret= FB_SECRET&redirect_uri=REDIRECT_URI
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试更新状态:

    require_once(facebook.php);
    $fb = new Facebook(array(
        'appId' => FB_APP_ID,
        'secret' => FB_SECRET
    ));
    $post = $fb->api('me/feed', 'POST', array(
        'access_token' => ACCESS_TOKEN, 
        'message' => 'hello world!'
    ));
    
    Run Code Online (Sandbox Code Playgroud)

我没有看到我的应用程序中的任何设置授权应用程序执行此操作,但也许我错过了一些东西.有什么建议?

Moh*_*san 12

确保publish_stream在请求代码时请求扩展权限(作为第三个参数添加):

https://graph.facebook.com/oauth/authorize?client_id=' . FB_APP_ID . '&redirect_uri=' . REDIRECT_URI . '&scope=publish_stream'
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

干杯!


Ric*_*ant 6

我有同样的问题,这篇文章真的帮助了我http://facebook.stackoverflow.com/a/8502709/965536

与我的问题唯一的区别是我使用的是PHP SDK,但基本上它的工作方式相同.我用过api电话

$permissions = $facebook->api('/me/permissions');
Run Code Online (Sandbox Code Playgroud)

然后,您可以运行检查

if(isset($permissions['data'][0]['publish_stream']) && $permissions['data'][0]['publish_stream'])
Run Code Online (Sandbox Code Playgroud)

这适用于我,但有人可能有更好的答案.您还应该将您的发布帖子流包装在try catch中

希望这可以帮助.

谢谢