Не удается получить токен доступа для страницы Facebook для приложения, имеющего все необходимые разрешения - PullRequest
1 голос
/ 22 сентября 2011

ТАК сообщество,

Я застрял в попытке автоматически подать заявку на мою страницу в Facebook.

Вот шаги, которые я предпринял:

A) Я авторизовал свое приложение для всех своих страниц в Facebook и предоставил разрешения offline_access, publish_stream и manage_pages, используя

https://www.facebook.com/dialog/oauth?client_id=<app_id>&redirect_uri=<url>&scope=read_stream,publish_stream,manage_pages,offline_access,publish_actions

B) Я запросил токен доступа для приложения с этими разрешениями

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=<app_id>&client_secret=<app_secure_key>&scope=manage_pages,offline_access,publish_stream

C) Теперь я хочу получить токен доступа к странице, чтобы иметь возможность сделать последний пост, используя

https://graph.facebook.com/feed?<page_access_token>&message=test&id=<page_id>&method=post

однако получение page_access_token - вот где я терплю неудачу

Это звонок, который я пытаюсь

https://graph.facebook.com/<page_id>?fields=access_token&access_token=<app_access_token>

но вместо токена доступа к странице я просто получаю это обратно:

{
   "id": "<page_id>"
}

У любого есть понимание того, чего мне не хватает, чтобы получить.

/ Thomas

Ответы [ 2 ]

3 голосов
/ 12 октября 2011

Нам только удалось заставить это работать в последние пару дней.Вот краткое изложение.Я прошу прощения, если я опишу это сверх необходимого, но несколько вещей, которые вы сделали, кажутся немного неправильными.Подводя итог вашим шагам:

Если вы делаете step_A правильно, что, судя по URL, кажется правильным, то в конце вы получите КОД (немаркер окончательного доступа).Это будет перенаправление с использованием URL-адреса перенаправления, отправленного на шаге A, поэтому убедитесь, что ваш сервер принимает запрос для указанного redirectURL .Он будет в форме http://redirectURL?code=A_CODE_GENERATED_BY_SERVER, поэтому при выполнении params [code] вы получите КОД.

Step_B может быть там, где вы немного отстали.Вы отправили CODE из step_A обратно на сервер.Я вижу, что вы снова установили параметр scope, который теперь не нужен (это было сделано в step_A ). Step_B URL вашего запроса должен выглядеть следующим образом:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

На этот раз Facebook отправляет обратно Response , а не , используя redirectURL.Если у вас есть правильный URI запроса Step_B , вы можете вставить его в адресную строку браузера, и ответ будет отображаться в самом браузере.Вы можете использовать HTTPBuilder (это то, что я использую) и захватить это тело ответа.Он имеет форму access_token=<really_big_string>&expires=<time_to_live>.Проанализируйте этот ответ в зависимости от того, что вы предпочитаете.

Это также access_token (назовем его access_token_uno), и я полагаю, что есть некоторые вещи, которые вы можете сделать, используя это.Я сам не пробовал, и поэтому мы переходим к Step_C .Я полагаю, вы уже знаете свой PageID.Вы должны отправить access_token_uno в Facebook по URL-адресу вида

https://graph.facebook.com/<PageID>?fields=access_token&access_token=<access_token_uno>

Ответом будет блок JSON формы:

{
   "access_token": <required_page_access_token>,
   "id": <PageID>
}

Выполните анализ блока JSON, и выготово.

Одна небольшая деталь, которую следует запомнить: redirectURL должен оставаться неизменным в Step_A и Step_B , иначе вещь не удалась.Кроме того, я еще не пробовал с разрешением offline_access, но не думаю, что описанные выше шаги изменятся, даже если это так.

0 голосов
/ 22 сентября 2011

Вам необходимо получить https://graph.facebook.com/{userid}/accounts для пользователя с правами администратора на страницу.Внутри этого вы должны найти access_token для страницы.

http://developers.facebook.com/docs/authentication/#app-login

...