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

时间:2014-05-26 12:27:56

标签: 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.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的完全访问权限而不要求授予访问权限?

2 个答案:

答案 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)

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