将OAuth2Session请求转换为google oauth2凭据

时间:2019-06-27 04:07:16

标签: python oauth-2.0 google-cloud-platform python-requests google-oauth

我构建了一个烧瓶应用程序,该应用程序使用flask_dance's google blueprint

授权用户

我想使用该用户的授权来通过GCS Client

访问GCS

如何转换 requests_oauthlib.OAuth2Session(由flask_dance返回) 到google.auth.credentials.Credentials(由Google Cloud libs所需要)中来实现?

OAuth2Session中的令牌如下:

{
    'id_token': 'eyJh....',
    'access_token': 'ya29.Glw....',
    'expires_at': 1561605616.261379,
    'expires_in': 3573.162272,
    'scope': [
        'https://www.googleapis.com/auth/userinfo.email',
        'openid',
        'https://www.googleapis.com/auth/cloud-platform',
        'https://www.googleapis.com/auth/userinfo.profile'
    ],
    'token_type': 'Bearer'
}

1 个答案:

答案 0 :(得分:1)

最简单的方法是提取访问令牌并使用它创建新的凭据。

// Grab the Access Token from the OAuth Flow
access_token = resp.json()["access_token"]

// Create new credentials with the Access Token
credentials = google.auth.credentials.Credentials(access_token)

注意:在OAuth流中,您必须包括Google Cloud Storage Scope。您将需要修改make_google_blueprint以包括Cloud Storage的范围。例子:

https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/devstorage.full_control