токен обновления google-python-api-client имеет значение null

Я пытаюсь использовать токены обновления с google-python-api-client, чтобы пользователю не приходилось каждый раз аутентифицировать приложение.

У меня есть следующий код, который создает фитнес-сервис, каждый раз аутентифицируя пользователя.

from apiclient.discovery import build
from oauth2client import tools
from oauth2client.file import Storage
from oauth2client.client import AccessTokenRefreshError
from oauth2client.client import OAuth2WebServerFlow
import httplib2

scope = "https://www.googleapis.com/auth/fitness.activity.read"
flow = OAuth2WebServerFlow(client_id, client_secret, scope, redirect_url)
auth_uri = flow.step1_get_authorize_url()
print auth_uri

token = str(input("Enter token"))

cred = flow.step2_exchange(token)
storage = Storage("credentials_file")
storage.put(cred)

storage = Storage("credentials_file")
cred2 = storage.get()

http = httplib2.Http()
http = cred2.authorize(http)
service = build('fitness', 'v1',http=http)

Однако повторная аутентификация явно не идеальна, поэтому я пытаюсь преобразовать это в код, который может обновлять токен доступа с помощью токена обновления. Однако после запуска этого кода cred.refresh_token и cred2.refresh_token имеют значение None. Как я могу получить токен обновления?


person quantumbutterfly    schedule 09.06.2018    source источник


Ответы (1)


Обновление, я понял, почему это ноль

Эта строка:

flow = OAuth2WebServerFlow(client_id, client_secret, scope, redirect_url)

Необходимо отредактировать следующим образом:

flow = OAuth2WebServerFlow(
            client_id,
            client_secret,
            scope,
            redirect_url,
            approval_prompt='force'
)
person quantumbutterfly    schedule 09.06.2018