Manage_pages предоставлен, но не может получить информацию об аккаунтах

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

Вчера работало - сегодня работает. Но потом я просто скопировал файлы и создал новое приложение. Разница только в том, что все файлы лежат на другом сервере. С моей учетной записью администратора фан-страницы я предоставил приложению следующие разрешения: manage_pages, publish_stream и offline_access.

Теперь я просто хочу запустить следующий код:

<?php $userAccounts = $facebook->api('/' . _ADMIN_ID . '/accounts');?>

Но я все время получаю сообщение об ошибке, что необходим токен доступа пользователя. Когда я удаляю /аккаунт, например:

<?php $userAccounts = $facebook->api('/' . _ADMIN_ID);?>

тогда он работает без проблем, и я получаю информацию администратора. Когда я проверяю свои настройки конфиденциальности, он говорит, что я предоставил разрешения, о которых я упоминал выше.

Вот код, который я запускаю, пока не появится ошибка:

<?php
include_once('config.php');
include_once('facebook/facebook.class.php');

$facebook = new Facebook(array(
  'appId' => _APP_ID,
  'secret' => _APP_SECRET,
  'cookie' => true,
  'fileUpload' => true
));
$userAccounts = $facebook->api('/' . _ADMIN_ID . '/accounts'); 
?>

Еще раз: у этого приложения есть разрешения manage_pages, publish_stream и offline_access, и без «/accounts» я получаю всю информацию о своей учетной записи администратора.

Любая помощь была бы очень приятной.

Заранее спасибо, Юрик


person Jurik    schedule 06.09.2011    source источник


Ответы (1)


Очевидно, что когда вы звоните: $facebook->api('/' . _ADMIN_ID); вы получаете общедоступную информацию об этом пользователе так же, как звоните:

https://graph.facebook.com/_ADMIN_ID

Вы сказали, что предоставили offline_access? поэтому используйте сохраненный токен доступа со своими вызовами:

$userAccounts = $facebook->api('/' . _ADMIN_ID . '/accounts?access_token=' . $stored_access_token);
person ifaour    schedule 06.09.2011
comment
Что вы имеете в виду под store_access_token? Я получил токен доступа к приложению с помощью file_get_contents('graph.facebook.com/oauth/' . _APP_ID . '&client_secret=' . _APP_SECRET), но все еще говорит, что мне нужен токен доступа пользователя. Для запроса этого ресурса требуется токен доступа пользователя. Кстати, $facebook-›api()-Call для получения токена доступа к приложению всегда возвращает значение null. Я действительно не понимаю. Это приложение получило разрешения (manage_pages, publish_stream и offline_access), я получил токен доступа приложения, и оно по-прежнему сообщает мне о необходимом токене доступа :( - person Jurik; 07.09.2011
comment
Возможно, мой сценарий не ясен: моя учетная запись администратора фан-страницы предоставила следующие разрешения manage_pages, publish_stream и offline_access, и приложение включено в эту фан-страницу в виде вкладки. Теперь пользователь B посещает эту фан-страницу и нажимает на вкладку. Теперь, на стороне сервера, приложение должно получить всю информацию об учетной записи администратора фан-страницы, но это не работает. - person Jurik; 07.09.2011
comment
Что ж, теперь я получаю пустой массив — сообщения об ошибке больше нет — когда я вызываю «/_ADMIN_ID/accounts»… Бьюсь об заклад, это ошибка FB. Потому что в моих параметрах конфиденциальности я вижу, что manage_pages предоставлено, и должно быть прослушано 2 страницы. Кстати, этот токен доступа, который я получаю с «/_ADMIN_ID/accounts», является постоянным? Это помогло бы мне и в этом случае. - person Jurik; 07.09.2011
comment
И еще одна загадочная вещь: мой пользователь b, который не имеет отношения к администратору фан-страницы, получает пустой массив ('/_ADMIN_ID/accounts'), но пользователь b является владельцем этого приложения (разрешения не предоставлены). Теперь - пользователь c - не получает пустой массив, он получает сообщение об ошибке, в котором говорится, что необходим токен доступа пользователя ... Я действительно не знаю, что там происходит в facebook. - person Jurik; 07.09.2011
comment
@Jurik, в первый раз, когда администратор страницы авторизовал ваше приложение, вы должны были сохранить его access_token для последующего использования. Вы можете попросить администратора получить доступ к вкладке страницы и сохранить токен доступа if($facebook->getUser() == "ADMIN_ID"), сохранить access_token, сделать это один раз, чтобы получить access_token и сохранить его, а затем удалить этот код. - person ifaour; 12.09.2011
comment
Вы также можете проверить флаг администратора в объекте страницы signed_request, а затем авторизоваться (если это еще не пользователь приложения) и сохранить access_token! - person ifaour; 12.09.2011
comment
Спасибо за Ваш ответ. Теперь я сохраняю access_token для этой страницы из своей учетной записи администратора. Но возникла другая проблема: 7341184" title="можно ли загрузить фотографию в альбом фан-страницы, не публикуя ее"> stackoverflow.com/questions/7340949/ - я думаю, это настоящая ошибка, и я могу исправить ее только с помощью обходного пути. - person Jurik; 13.09.2011
comment
Пожалуйста, примите этот ответ, если он ответил на ваш вопрос. Я посмотрю на другой вопрос. - person ifaour; 13.09.2011