google-python-api-客户端刷新令牌为空
google-python-api-client refresh token is null
我正在尝试将刷新令牌与 google-python-api-客户端一起使用,以避免每次都必须让用户对应用程序进行身份验证。
我有以下代码通过让用户每次都进行身份验证来构建健身服务
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。如何获取刷新令牌?
更新,我知道为什么它是空的
这一行:
flow = OAuth2WebServerFlow(client_id, client_secret, scope, redirect_url)
需要编辑如下:
flow = OAuth2WebServerFlow(
client_id,
client_secret,
scope,
redirect_url,
approval_prompt='force'
)
我正在尝试将刷新令牌与 google-python-api-客户端一起使用,以避免每次都必须让用户对应用程序进行身份验证。
我有以下代码通过让用户每次都进行身份验证来构建健身服务
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。如何获取刷新令牌?
更新,我知道为什么它是空的
这一行:
flow = OAuth2WebServerFlow(client_id, client_secret, scope, redirect_url)
需要编辑如下:
flow = OAuth2WebServerFlow(
client_id,
client_secret,
scope,
redirect_url,
approval_prompt='force'
)