Проверьте, установлено ли приложение на вкладке страницы. - PullRequest
7 голосов
/ 20 ноября 2011

Каков наилучший способ проверить, установлено ли приложение-вкладка на определенной фан-странице, используя график API?

Единственный способ, которым я могу придумать, это использовать https://graph.facebook.com/page_id/tabs/app_id,, и это вернет данные для данной вкладки, если она установлена, но, по-видимому, требуется access_token.Чтобы использовать этот метод, я думаю, мне нужно было бы спросить пользователя не только о разрешениях manage_pages, но и о offline_access, затем я мог бы сохранить page_access_token и позже использовать его для единственной цели проверки, было ли приложениеудален?

Кажется странным, что это будет не просто публичная информация, учитывая, что без входа в Facebook вы можете увидеть все вкладки, установленные на фан-странице?

Вот аналогичный вопросо деавторизованном обратном вызове: http://facebook.stackoverflow.com/questions/8000163/deauthorize-page-tab-notification

Спасибо

1 Ответ

8 голосов
/ 06 января 2012

Из моего тестирования и согласно документации Facebook вам не нужен токен доступа пользователя, чтобы проверить, установлено ли приложение (хотя вы можете его использовать). Мне было проще войти в систему как ваше приложение. Вот ссылка на Facebook , которая показывает вам, как это сделать. Посмотрите на раздел «Вход в приложение».

Короче говоря, вы получаете токен доступа к приложению с чем-то вроде этого в php:

$ access_token = file_get_contents (https://graph.facebook.com/oauth/access_token? client_id = YOUR_APP_ID & client_secret = YOUR_APP_SECRET & grant_type = client_credentials);

Затем вы можете использовать этот токен доступа, чтобы получить вкладку данных:

$ app_check = json_decode (file_get_contents ("https://graph.facebook.com/". FACEBOOK_PAGE_ID. "/ tabs /". YOUR_APP_ID. "? access_token =". $ Access_token;));

Как видите, я json расшифровал содержимое этого файла, а затем проверил, существует ли этот идентификатор приложения на странице.

если (! Пустые ($ app_check-> данные)) {

эхо "APP УСТАНОВЛЕНО"; } Еще { эхо "приложение не установлено"; }

Надеюсь, это поможет!

...