токен обновления google-python-api-client равен нулю - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь использовать токены обновления с 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.Как получить токен обновления?

1 Ответ

0 голосов
/ 09 июня 2018

Обновление, я выяснил, почему он равен нулю

Эта строка:

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

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

flow = OAuth2WebServerFlow(
            client_id,
            client_secret,
            scope,
            redirect_url,
            approval_prompt='force'
)
...