Oauth 2.0 如何使用OAuth2永久授予访问权限

Oauth 2.0 如何使用OAuth2永久授予访问权限,oauth-2.0,google-oauth,google-groups-settings,Oauth 2.0,Google Oauth,Google Groups Settings,我尝试使用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.g

我尝试使用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调用来说是不合适的


有没有一种方法可以使用用户名/密码或客户端密码来授予对API的永久完全访问权限,而无需请求是否授予访问权限?

您是否在成功获取凭据后将凭据保存到存储器?

当您将用户重定向到Google时,您需要请求访问权限\u type=offline

然后您将获得一个代码,该代码可以(通过使用您的客户端\u id和客户端\u机密)交换到访问\u令牌(即您已经使用的令牌)和刷新\u令牌中


当您的访问令牌过期时,您可以发布刷新令牌、客户机标识和客户机机密以获取另一个访问令牌。如果需要(或几周后…),您可以多次执行此操作。

是的,我将它们保存在名为
groups settings.dat的文件中,然后获取并使用它们。但问题是,当我在一两天后再次尝试测试它们时,我会进入“授予访问权限”页面,文件中有凭据。我想它们似乎是无效的,我想是和过期有关吧!是的,你是对的,但是在这里我们应该通过humain操作第一次授予访问权……那么应用程序调用API来撤销访问权,而不要求任何用户授予任何访问权呢?我是一个域的管理员,我正在开发一个应用程序,该应用程序会随时间改变组设置。因此,即使是第一次,它也应该在不授予访问权限的情况下自行完成。有什么想法吗?如果您的应用程序位于Google Apps Marktplace(或者您找到了另一种授予服务帐户访问权限的方式),您应该能够使用服务帐户获得脱机访问:为您的服务帐户请求访问令牌(并将电子邮件地址指定为sub)。我只是读过,但我自己从来没有读过。也许这个问题的答案会有所帮助