Facebook应用程序现在要求扩展权限而不是基本权限,

时间:2011-08-28 03:42:54

标签: php jquery facebook-graph-api facebook

我的Facebook应用程序最初是要求用户的基本权限,现在我添加了一些需要延长的权限,除了将代码更改为如下并删除并重新添加应用程序我需要更改其他任何内容应用程序。

当我从我的个人资料中删除应用程序然后尝试重新添加它时,它只询问基本信息,我如何告诉Facebook此应用程序现在需要扩展权限,因为它给了我这个警告:OAuthException :( #200)用户尚未授权应用程序执行此操作。

我是否需要重置更改某些设置的app秘密?

> $facebook = new Facebook(array(   'appId'  => 'xxxxxxxxxxxx',  
> 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', ));
> 
> // Get User ID
> 
> 
> $user = $facebook->getUser(); if ($user) {   try {
>     // Get the user profile data you have permission to view
>     $user_profile = $facebook->api('/me');
>     $uid = $facebook->getUser();
>      
>     
>       $url = $facebook->getLoginUrl(array(
>     'canvas' => 1,
>     'fbconnect' => 0,
>     'scope' =>'publish_stream'));
>     
>     
>     $attachment = array  ( 
> 'access_token'=>$facebook->getAccessToken(),  'message' => 'I had a
> question: should I write a PHP facebook app that actually worked?', 
> 'name' => 'I Asked Bert',  'caption' => 'Bert replied:',  'link' =>
> 'http://apps.facebook.com/askbert/',  'description' => 'NO', 
> 'picture' => 'http://www.facebookanswers.co.uk/img/misc/question.jpg' 
> );  echo "Test 1"; 
> 
> $result = $facebook->api('/me/feed/','post',$attachment);
>  
>     echo "Test 2"; 
>     $_SESSION['userID'] = $uid;
> 
> 
>   } catch (FacebookApiException $e) {
>     $user = null;   } } else {   die('Somethign Strange just happened
> <script>top.location.href="'.$facebook->getLoginUrl().'";</script>');
> }

2 个答案:

答案 0 :(得分:1)

如果您使用的是较新的3.0 PHP SDK,则在调用getLoginUrl时将req_perms更改为范围。这在新的PHP SDK版本中发生了变化。

此外,您还需要验证用户是否仍然为您的应用授予了所需的扩展权限,如果还没有,请重新提示他们获取权限。例如,您捕获FacebookApiException然后将它们重定向到getLoginUrl(),但该登录还应该像您之前在代码中那样指定所需的范围。

答案 1 :(得分:1)

下面的代码工作正常,首先检查权限然后发布流,如果没有找到权限,则询问用户是否允许。

$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
));
$user = $facebook->getUser();
$user_profile = $facebook->api('/me');


if( array_key_exists('publish_stream', $permissions['data'][0]) ) {
                // Permission is granted!
                // Do the related task
                //$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
                  $post_id = $facebook->api('/me/feed', 'post', $attachment);

            } else {
                // We don't have the permission
                // Alert the user or ask for the permission!
                echo "Click Below to Enter!";
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
            }