1

我尝试使用 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 的完全访问权限而不要求授予访问权限?

4

2 回答 2

1

当您将用户重定向到 Google 时,您需要请求 access_type=offline。

然后,您将获得一个代码,该代码可以(通过使用您的 client_id 和 client_secret 发布)交换为 access_token(即您已经在使用的那个)和 refresh_token。

当您的 access_token 过期时,您可以通过 POST refresh_token、client_id 和 client_secret 来获取另一个 access_token。如果需要(或几周后......),您可以多次执行此操作

于 2014-05-29T09:21:00.803 回答
0

成功获得凭据后,您是否将凭据保存到存储中?

于 2014-05-28T06:18:48.213 回答