Я пытаюсь использовать 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"
}
Так после этого мне интересно:
- Могу ли я использовать
id_token
Обновить мойaccess_token
? - Если сначала
True
: Как? - Существует ли какое-либо различие между типами пользователей, вступающие с проверкой подлинности, потому что я заметил, что иногда вы получаете
refresh_token
, но мне нужно, чтобы получить его постоянно, в следующий раз, когда я сделать поток OAuth2 я получаюid_token