2013-03-27 1 views
0

Я пишу автономное приложение с доступом к API Adwords. Аутентификация и авторизация oauth2 отлично работают.восстановление учетных данных oauth2 для adwords api из сохраненного refreshtoken (java)

Моя проблема заключается в том, что я хочу сохранить refreshtoken в текстовом файле и использовать его непосредственно при следующем запуске приложения для восстановления моих учетных данных. Резервное копирование должно быть действительным в течение 14 дней, поэтому восстановление учетных данных доступа будет очень хорошим.

Я не нашел пример, который работает. Может кто-нибудь помочь?

+0

где именно лежит проблема? Вы не можете получить refreshtoken или вы не знаете, как использовать его для обновления токена доступа? – GameDroids

+0

Я не знаю, как использовать строку refreshtoken (которую я могу получить) для создания нового объекта учетных данных и обновления токена доступа. Альвин – Alwin

ответ

0

refresh token мало чем отличается от токенов авторизации. OAuth2.0 имеет несколько потоков, которые могут быть использованы для доступа к серверам. Общим (и самым надежным) потоком является так называемый Код авторизационного кода (detailed info here).

Там ваше приложение просит авторизационный сервер для authorization code при первом обращении пользователя к вашему приложению. Пользователь получит этот authorization code через веб-сайт, когда он войдет в систему и предоставит вашему приложению доступ к сервису. Ваше приложение отправляет этот код на сервер авторизации , чтобы получить первые access token (а вместе с ним и refresh token). Это тот же сервер, который вам необходимо отправить refresh token.

Теперь, я не знаю точно, что Ури сервера в вашем случае, но это было бы примером запроса POST вы можете отправить на сервер:

POST /o/oauth2/token HTTP/1.1 
Host: accounts.google.com 
Content-Type: application/x-www-form-urlencoded 

client_id=YOUR_CLIENT_ID_HERE& 
client_secret=YOUR_CLIENT_SECRET_HERE& 
refresh_token=THE_REFRESH_TOKEN_HERE& 
grant_type=refresh_token 

Если запрос действителен, сервер ответит новым Access Token. Here вы можете найти более подробную информацию о конкретных запросах, которые вы можете сделать.

Имейте в виду, что каждый токен (токены доступа и обновления) должен храниться в памяти. Лучший способ сделать это - сохранить его в зашифрованном виде и при отправке токенов использовать только POST и https. Но это был не ваш вопрос.

Надеюсь, я справлюсь с этим.