#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")) );
надеюсь, это то, что вы просили… получайте удовольствие