2014-09-26 3 views
1

Я пытаюсь использовать Google OAuth2 для получения контактной информации. Я не пытаюсь получить доступ, мне интересно, почему-то я прекратил получать refresh_token, вместо этого получаю id_token (длинная строка JWT). Я использую python urllib для получения информации о доступе для пользователей. Мой код:google oauth2 id_token vs refresh_token

scope = 'https://accounts.google.com/o/oauth2/token' 
params = urllib.urlencode({ 
    'code': request.GET['code'], 
    'redirect_uri': settings.SOCIAL_AUTH_GOOGLE_REDIRECT_URI, 
    'client_id': settings.SOCIAL_AUTH_GOOGLE_OAUTH2_KEY, 
    'client_secret': settings.SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET, 
    'grant_type': 'authorization_code', 
}) 

Ответ:

{u'access_token': u'hash', 
u'token_type': u'Bearer', 
u'expires_in': 3600, 
u'id_token': u'really long hash'} 

Я использую контакты Сфера https://www.google.com/m8/feeds/contacts/default/full?alt=json Когда я пытаюсь добавить к Params access_type : offline Я получаю ошибку ниже:

Failed to retrive access_token. Status: 400 
Message: { 
    "error" : "invalid_request", 
    "error_description" : "Parameter not allowed for this message type: access_type" 
} 

Так после этого мне интересно:

  1. Могу ли я использовать id_token Обновить мой access_token?
  2. Если сначала True: Как?
  3. Существует ли какое-либо различие между типами пользователей, вступающие с проверкой подлинности, потому что я заметил, что иногда вы получаете refresh_token, но мне нужно, чтобы получить его постоянно, в следующий раз, когда я сделать поток OAuth2 я получаю id_token

ответ

0

Если вам нужен токен обновления, то лучше добавить access_type = автономный режим и approval_prompt = сила на https://accounts.google.com/o/oauth2/auth?

var url = 'https://accounts.google.com/o/oauth2/auth?' + 
      'client_id=' + CLIENT_ID + '&' + 
      'response_type=code&access_type=offline&approval_prompt=force&' + 
      'redirect_uri=' + encodeURIComponent(REDIRECT_URL) + 
      '&scope=' + SCOPES; 

Тогда возвращаемый код всегда будет давать вам код обновления в следующем рукопожатия с https://www.googleapis.com/oauth2/v4/token

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