为什么我的示例 google api 代码(python、admin、directory_v1)出现 503 服务不可用?
Why am I getting 503 service unavailable on my sample google api code (python, admin, directory_v1)?
我有一个管理员 Google 帐户,可以为我的大学 (example@stu.najah.edu
) 创建自定义域用户。
我想编写一个 python 脚本来自动执行此任务,因此我为此使用了 Google 的 API。
我遵循了本教程 (https://github.com/googleapis/google-api-python-client/blob/master/docs/oauth-server.md)
并做了一切。但仍然从 python 得到以下异常:
/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/bin/python /Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py
Getting the first 10 users in the domain
Traceback (most recent call last):
File "/Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py", line 32, in <module>
main()
File "/Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py", line 19, in main
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
File "/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/lib/python3.7/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/lib/python3.7/site-packages/googleapiclient/http.py", line 856, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&maxResults=10&orderBy=email&alt=json returned "Service unavailable. Please try again">
Process finished with exit code 1
这是我的 python 代码
from __future__ import print_function
from google.oauth2 import service_account
import googleapiclient.discovery
def main():
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user',
'https://www.googleapis.com/auth/admin.directory.customer']
SERVICE_ACCOUNT_FILE = './quickstart-1570011757324-0609ceb3ce31.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials)
# Call the Admin SDK Directory API
print('Getting the first 10 users in the domain')
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
users = results.get('users', [])
if not users:
print('No users in the domain.')
else:
print('Users:')
for user in users:
print(u'{0} ({1})'.format(user['primaryEmail'],
user['name']['fullName']))
if __name__ == '__main__':
main()
问题是我没有像 DalmTo 提到的那样设置委派。
所以这是我完整的工作代码:
from __future__ import print_function
from google.oauth2 import service_account
import googleapiclient.discovery
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user', ]
SERVICE_ACCOUNT_FILE = './quickstart-1570011757324-2bfbc3d902b9.json'
def main():
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject('admin@najah.edu')
service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=delegated_credentials)
# Call the Admin SDK Directory API
print('Getting the first 10 users in the domain')
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
users = results.get('users', [])
if not users:
print('No users in the domain.')
else:
print('Users:')
for user in users:
print(u'{0} ({1})'.format(user['primaryEmail'],
user['name']['fullName']))
if __name__ == '__main__':
main()
注意 credentials.with_subject('admin@domain.com')
部分。
我有一个管理员 Google 帐户,可以为我的大学 (example@stu.najah.edu
) 创建自定义域用户。
我想编写一个 python 脚本来自动执行此任务,因此我为此使用了 Google 的 API。
我遵循了本教程 (https://github.com/googleapis/google-api-python-client/blob/master/docs/oauth-server.md)
并做了一切。但仍然从 python 得到以下异常:
/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/bin/python /Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py
Getting the first 10 users in the domain
Traceback (most recent call last):
File "/Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py", line 32, in <module>
main()
File "/Users/osamaabuomar/projects/gsuite-api-demo/quickstart.py", line 19, in main
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
File "/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/lib/python3.7/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Users/osamaabuomar/projects/.virtualenvs/gsuite-api-demo/lib/python3.7/site-packages/googleapiclient/http.py", line 856, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&maxResults=10&orderBy=email&alt=json returned "Service unavailable. Please try again">
Process finished with exit code 1
这是我的 python 代码
from __future__ import print_function
from google.oauth2 import service_account
import googleapiclient.discovery
def main():
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user',
'https://www.googleapis.com/auth/admin.directory.customer']
SERVICE_ACCOUNT_FILE = './quickstart-1570011757324-0609ceb3ce31.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials)
# Call the Admin SDK Directory API
print('Getting the first 10 users in the domain')
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
users = results.get('users', [])
if not users:
print('No users in the domain.')
else:
print('Users:')
for user in users:
print(u'{0} ({1})'.format(user['primaryEmail'],
user['name']['fullName']))
if __name__ == '__main__':
main()
问题是我没有像 DalmTo 提到的那样设置委派。 所以这是我完整的工作代码:
from __future__ import print_function
from google.oauth2 import service_account
import googleapiclient.discovery
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user', ]
SERVICE_ACCOUNT_FILE = './quickstart-1570011757324-2bfbc3d902b9.json'
def main():
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject('admin@najah.edu')
service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=delegated_credentials)
# Call the Admin SDK Directory API
print('Getting the first 10 users in the domain')
results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
users = results.get('users', [])
if not users:
print('No users in the domain.')
else:
print('Users:')
for user in users:
print(u'{0} ({1})'.format(user['primaryEmail'],
user['name']['fullName']))
if __name__ == '__main__':
main()
注意 credentials.with_subject('admin@domain.com')
部分。