Зачем вам нужны и «код», и «токен» в потоке аутентификации Facebook OAuth2, как описано здесь: https://developers.facebook.com/ docs / authentication / ?
Если вы посмотрите ссылку на диалоговое окно OAuth ( https://developers.facebook.com/docs/reference/dialogs/oauth/ ), вы увидите, что использовать токен только для получения информации о пользователе, и если вы укажете параметр response_type
как токен
или код, токен
, тогда вы получите токен на первый раз.
Почему вам нужно получить «код», а затем использовать этот код для получения «токена», а не получать токен напрямую?
Я думаю, я неправильно понимаю кое-что о том, как работает OAuth, но он похоже, вы полностью избегаете запроса к https://graph.facebook.com/oauth/access_token
, если получаете токен в первый раз в диалоге.
В OAuth 2.0 с Facebook полное понятие просто следующие.
Шаг 1. Получите "Код авторизации" ПОЛУЧИТЬ запросом
request URI: https://www.facebook.com/dialog/oauth
Params:
response_type=code
client_id={add your "App id" got by registering app}
redirect_uri={add redirect uri defined at the registration of app}
scope={add the scope needed in your app}
Headers: None
Шаг 2. Получите "Маркер доступа" путем отправки кода авторизации как запроса POST
URI: https://graph.facebook.com/oauth/access_token
Params:
grant_type=authorization_code
client_id=<add your "App id" got by registering app>
redirect_uri=<add redirect uri defined at the registration of app>
code=<obtained authorization code from previous step>
Headers:
Authorization:Basic encode <App Id:App Secret> with base64
Content-Type:application/json
Шаг 3. Используйте маркер доступа, полученный от вышеупомянутого шага, и получите пользовательские ресурсы