Приложение Facebook теперь запрашивает расширенное разрешение вместо базового, - PullRequest
0 голосов
/ 28 августа 2011

Мое приложение Facebook изначально запрашивало базовое разрешение пользователя, теперь я добавил некоторые функции, которые требуют расширенного разрешения, помимо изменения кода следующим образом, удаления и повторного добавления приложения, мне нужно изменить что-либо еще дляприложение.

Потому что, когда я удалил приложение из своего профиля, а затем попытался добавить его, он запросил только Основную информацию, как я могу сообщить Facebook, что это приложение требует расширенного разрешения сейчас, так как оно дает мне это предупреждение:OAuthException: (# 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>');
> }

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

код ниже работает, нужно было сначала проверить разрешение, затем опубликовать поток и, если разрешение не найдено, запросить разрешение у пользователя.

$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")) );
            }
1 голос
/ 28 августа 2011

Если вы используете более новый PHP SDK 3.0, то измените req_perms на scope при вызове getLoginUrl.Это изменилось в более новой версии PHP SDK.

Кроме того, вы захотите убедиться, что пользователь все еще предоставил вашему приложению необходимые расширенные разрешения, и, если они этого не сделали, повторно запросить у них разрешения.Например, вы перехватываете исключение FacebookApiException и затем перенаправляете их в getLoginUrl (), но в этом имени входа также должны быть указаны необходимые области, как вы делали ранее в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...