我正在使用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获取令牌,您可以执行与此类似的操作:
将其添加到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(如果这是您需要的)。