2015-11-16 2 views
2

Итак, я пытаюсь обернуть голову вокруг клиентской библиотеки google python api. Это то, что у меня есть:Google API-интерфейс Python Refresh access_token с помощью refresh_token

  1. Oauth2Credentials класс -> Предоставляет метод обновления(), который позволяет для повторного выпуска нового access_token. В клиенте это единственный общедоступный метод, позволяющий переиздать новый токен. Кроме того, если HTTP-запрос разрешен с использованием экземпляра этого класса, обновление обрабатывается неявно. Кроме того, этот экземпляр в идеале не должен создаваться напрямую, а через объект потока.https://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.client.OAuth2Credentials-class.html

  2. Класс AccessTokenCredentials -> Принимает только access_token и может использоваться только для проверки HTTP-запросов. Не предоставляет метод обновления. https://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.client.AccessTokenCredentials-class.html

Как использовать маркер обновления, чтобы получить новый access_token, когда он Oauth2Credentials экземпляр, как правило, не будет создан? Должен ли я хранить объект учетных данных при первом создании? Если да, то как?

+0

ли вы найти решение? Если да, отправьте его. Благодарю. –

ответ

0

Да, вы должны как-то хранить токен доступа в своей базе данных.

При загрузке его из БД, вот как на самом деле обновить его, прежде чем использовать его:

#when you load the credentials from the DB, make sure it is 
    #this type of object: 
    credentials = google.oauth2.credentials.Credentials() 
    #here is the object (with type) that the credential object needs to 
    #do the refreshing 
    request = google.auth.transport.requests.Request() 
    #and now we actually refresh the token. 
    credentials.refresh(request) 
    #and now the credentials object should be usable. 

Если вы ищете более подробную информацию, я сделал подправить в целом процесс oauth2 с использованием библиотек Google от начала до конца здесь:

https://stackoverflow.com/a/48242762/1626536

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