2013-06-12 2 views
0

Я делаю приложение PHP, которое будет использовать единую учетную запись Google.OAuth поток с обновлением токенов. Ошибка 500

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

После этого, в другом URL-адресе, который будет использоваться клиентами, я пытаюсь выполнить аутентификацию.

Далее я тяну маркер обновления из базы данных, а затем сделать пост запрос на:

$url = "https://accounts.google.com/o/oauth2/token"; 

с параметрами:

$post_data = array(
    'client_id' => CLIENT_ID, 
    'client_secret' => CLIENT_SECRET, 
    'refresh_token' => $refreshToken, 
    'grant_type' => 'refresh_token'); 

После получения успешного ответа, я сохраняю access_token но когда я пытаюсь обменять его на учетные данные, я получаю эту ошибку. Сообщение:

An error occurred: Error fetching OAuth2 access token, message: '  
Error processing OAuth 2 request 

Error 500 
' 
Fatal error: Uncaught exception 'CodeExchangeException' in ... 

Am I m что-то здесь? Я использую правильный поток oauth?

Заранее благодарен!

ответ

1

Когда вы получаете токен доступа из токена обновления, этот токен доступа является учетным данными и после этого нет процесса обмена. В учетных данных: 1. токен доступа 2. обновить токен. И вы получаете учетные данные в обмен на код авторизации, а не токен доступа. Таким образом, в вашем коде произошла ошибка при попытке получить токен доступа в обмен на токен доступа.

+0

thnx для вашего ответа. Итак, используя токен обновления, я получаю json obj, который содержит access_token и id_token. Что мне делать с этим json obj? передать его, чтобы построить сервис? – Paschalis

+0

Я не уверен, что делать с этим json-объектом. Тем не менее, там должна быть какая-то абстракция относительно токена обновления. Я не совсем уверен в google-api-php-клиенте, но в google-api-python-client Credentials.authorize автоматически пытается обновить токен для вас, если он истек, так что с уровня разработчика они даже не должны беспокоиться о освещении. Должна быть реализована абстракция в отношении освежения, и вам не нужно ее обрабатывать самостоятельно. Вместо того, чтобы самостоятельно обрабатывать обновления, я рекомендую вам более подробно ознакомиться с документацией. –

Смежные вопросы