Cloud Function获取`getIamPolicy`的访问令牌

问题描述 投票:1回答:1

我正在使用python的云函数作为我的项目的无服务器我通过触发Cloud Function将用户添加到我的BigQuery项目中,这样他就可以访问一些表。

我需要从gsutil获取访问令牌才能使用API​​来授予用户访问权限。

如何为我的项目提供IAM角色或获取访问令牌,以便我可以从我的Cloud Function中使用它来为用户(通过电子邮件)访问我的BigQuery。

我正在使用这些API端点:

ENDPOING_GETIAMPOLICY = 'https://cloudresourcemanager.googleapis.com/v1/projects/{resource}:getIamPolicy'
ENDPOING_SETIAMPOLICY = 'https://cloudresourcemanager.googleapis.com/v1/projects/{resource}:setIamPolicy'

为了使用这个ENDPOING_GETIAMPOLICY端点,我需要ACCESS_TOKEN

# Preparing get all the current iam users
params = {
 'access_token': ACCESS_TOKEN
}
resp = requests.post(ENDPOING_GETIAMPOLICY.format(resource=resource), params=params)

我对其他如何做的建议持开放态度。

python authentication oauth oauth-2.0 google-cloud-functions
1个回答
2
投票

为了使用Python获取令牌,您可以执行与此类似的操作:

将其添加到requirements.txt:

oauth2client>=4.1.2

在Cloud Function中检索令牌,如下所示:

def getAccessToken():

    from oauth2client.client import GoogleCredentials
    credentials = GoogleCredentials.get_application_default()
    credentials.get_access_token()
    token = credentials.access_token

    return verifyToken(token)

def verifyToken(token):
    import requests
    response = requests.get('https://www.googleapis.com/bigquery/v2/projects/[PROJECT_ID]/datasets', headers={'Authorization': 'Bearer ' + token})

    return (response.content)  

这将以String格式返回Access Token,然后您可以将其添加到JSON(如果这是您需要的)。

© www.soinside.com 2019 - 2024. All rights reserved.