Нам только удалось заставить это работать в последние пару дней.Вот краткое изложение.Я прошу прощения, если я опишу это сверх необходимого, но несколько вещей, которые вы сделали, кажутся немного неправильными.Подводя итог вашим шагам:
Если вы делаете 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
, но не думаю, что описанные выше шаги изменятся, даже если это так.