google-python-api-client刷新令牌为空

时间:2018-06-09 12:00:10

标签: python oauth-2.0 google-fit google-python-api

我正在尝试使用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 :(得分:1)

更新,我弄明白为什么它为空

这一行:

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

需要编辑如下:

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