Облачная функция получает токен доступа для `getIamPolicy` - PullRequest
0 голосов
/ 15 ноября 2018

Я использую облачные функции с python как сервер для моего проекта Я запустил облачную функцию, чтобы добавить пользователя в мой проект BigQuery, чтобы он мог иметь доступ к некоторым таблицам.

Мне нужно получить токен доступа от gsutil, чтобы использовать API для предоставления пользователю прав доступа.

Как я могу назначить роль IAM или получить токен доступа к своему проекту, чтобы я мог использовать его из своей облачной функции, чтобы предоставить пользователям (по электронной почте) доступ к моему 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)

Я открыт для других предложений о том, как это сделать.

1 Ответ

0 голосов
/ 17 декабря 2018

Чтобы получить токен с помощью Python, вы можете сделать что-то похожее на это:

Добавьте это в needs.txt:

oauth2client>=4.1.2

Получите токен в облачной функции следующим образомthis:

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, затем вы можете добавить его в JSON, если это то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...