Проверьте разрешения facebook с помощью php

#php #facebook #sdk

#php #Facebook #sdk

Вопрос:

Я пытаюсь проверить разрешения, которые пользователи разрешили для моего сайта, и использую facebook SDK для получения разрешений в виде массива.

 array(1) { 
["data"]=> array(3) { 
[0]=> array(2) { 
["permission"]=> string(9) "installed" 
["status"]=>     string(7) "granted" } 
[1]=> array(2) { 
["permission"]=> string(14) "public_profile" 
["status"]=> string(7) "granted" } 
[2]=> array(2) { 
["permission"]=> string(15) "publish_actions" 
["status"]=> string(7) "granted" } } }
  

я нашел некоторый код для поиска в массиве определенного разрешения, однако я думаю, что SDK изменился с момента написания этого кода.

 if( array_key_exists('publish_actions', $permissions['data'][0]) ) {
        // Permission is granted!
        // Do the related task
       $post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
} else {
        // We don't have the permission
        // Alert the user or ask for the permission!
        header( "Location: " . $facebook->getLoginUrl(array("scope" =>    "publish_stream")) );
  

}

я ищу способ поиска publish_actions и определения, является ли это declined или granted .

Ответ №1:

Вам просто нужно преобразовать permission['data'] массив в более удобный массив …

 $arr = array();

foreach( $permissions['data'] as $v){

    $arr[$v['permission']] = $v['status'];
}

var_dump($arr);
  

Затем используйте свой скрипт, немного измененный :

 if( array_key_exists('publish_actions', $arr) amp;amp; $arr['publish_actions'] == 'granted' ) {
    // Permission is granted!
    // Do the related task
    $post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
} else {
    // We don't have the permission
    // Alert the user or ask for the permission!
    header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
  

надеюсь, это то, что вы просили… получайте удовольствие