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

Php Facebook应用程序现在请求扩展权限而不是基本权限,,php,jquery,facebook-graph-api,facebook,Php,Jquery,Facebook Graph Api,Facebook,我的facebook应用程序最初要求用户提供基本权限,现在我添加了一些需要扩展权限的功能,除了将代码更改为如下,删除并重新添加应用程序之外,我还需要更改应用程序的任何其他内容 因为当我从我的个人资料中删除应用程序,然后尝试重新添加时,它只要求提供基本信息,我如何告诉facebook该应用程序现在需要扩展权限,因为它向我发出警告:OAutheException:(#200)用户尚未授权应用程序执行此操作 我是否需要重置更改某些设置的应用程序密码 > $facebook = new Faceb

我的facebook应用程序最初要求用户提供基本权限,现在我添加了一些需要扩展权限的功能,除了将代码更改为如下,删除并重新添加应用程序之外,我还需要更改应用程序的任何其他内容

因为当我从我的个人资料中删除应用程序,然后尝试重新添加时,它只要求提供基本信息,我如何告诉facebook该应用程序现在需要扩展权限,因为它向我发出警告:OAutheException:(#200)用户尚未授权应用程序执行此操作

我是否需要重置更改某些设置的应用程序密码

> $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>');
> }
$facebook=newfacebook(数组('appId'=>'xxxxxxxxxxx',
>“secret”=>“xxxxxxxxxxxxxxxxxxxxxxxxxxxx”,);
> 
>//获取用户ID
> 
> 
>$user=$facebook->getUser();如果($user){try{
>//获取您有权查看的用户配置文件数据
>$user_profile=$facebook->api('/me');
>$uid=$facebook->getUser();
>      
>     
>$url=$facebook->getLoginUrl(数组)(
>“画布”=>1,
>“fbconnect”=>0,
>“范围”=>“发布流”);
>     
>     
>$attachment=数组(
>“访问令牌”=>$facebook->getAccessToken(),“消息”=>“我有一个
>问:我是否应该编写一个PHP facebook应用程序来实际工作,
>“姓名”=>“我问伯特”,“说明”=>“伯特回答:”,“链接”=>
> 'http://apps.facebook.com/askbert/“,”说明“=>”否“,
>'图片'=>'http://www.facebookanswers.co.uk/img/misc/question.jpg' 
>);回声“测试1”;
> 
>$result=$facebook->api('/me/feed/','post',$attachment);
>  
>回波“测试2”;
>$\u会话['userID']=$uid;
> 
> 
>}catch(FacebookApiException$e){
>$user=null;}}其他{die('发生了一些奇怪的事情
>top.location.href=“'.$facebook->getLoginUrl().”“;”);
> }

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


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

下面的代码正在运行,首先检查权限,然后发布流,如果没有找到权限,则向用户请求权限

$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")) );
            }

我做了一个更新。最后,如果存在api异常(也称为无权限),则会有第二个getLoginUrl。将所需的作用域也添加到该调用中。