我尝试使用OAuth2构建具有以下内容的组设置服务:
def groupSettingsService(request):
CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), 'client_secrets.json')
FLOW = client.flow_from_clientsecrets(CLIENT_SECRETS, scope=['https://www.googleapis.com/auth/apps.groups.settings'], message=tools.message_if_missing(CLIENT_SECRETS))
storage = Storage('groups-settings.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run(FLOW, storage)
http = httplib2.Http()
http = credentials.authorize(http)
return discovery.build('groupssettings', 'v1', http=http)
但问题是当令牌不再有效(过期)时,它会重定向到一个页面,告诉用户再次授予该范围访问权限......不适合API调用的事情!
有没有办法使用用户名/密码或client_secret来永久授予对API的完全访问权限而不要求授予访问权限?
答案 0 :(得分:1)
将用户重定向到Google时,您需要要求access_type =离线。
您将获得一个代码,可以将其(通过使用您的client_id和client_secret进行POST)交换到access_token(您正在使用的那个)和refresh_token。
当你的access_token到期时,你可以发布refresh_token,client_id和client_secret来获取另一个access_token。如果需要(或几周后......),您可以多次执行此操作
答案 1 :(得分:0)
成功获取凭据后,您是否将凭据保存到存储中?