谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
本文主要介绍使用API服务账号和Admin来管理G套装中的所有域用户。主要技术点在
API 服务帐号申请
OAuth 2.0认证获取token
Admin 中的 API 应用程序授权
@
一、API服务账号申请1、注册云平台
访问
第一次使用GCP(云)的用户会自动弹出注册页面
2、新的 GCP 开发者项目
在 API 标题栏中谷歌开发者账号注册,单击“组织”按钮,然后单击新建项目。
3、启用管理 SDK
新建项目后,进入项目信息中心,点击“+ APIs and ”
在搜索栏中搜索 Admin 以快速检索 Admin SDK
点击“启用”
4、申请API服务账号
在 API 和服务控制台中,点击“”、“+ ”、“ ”
在创建服务帐号的第三步,下载密钥和私钥文件,这是一个JSON格式的密钥,用于服务帐号的身份验证。
记得保存这个密钥以备后用,不要公开分享。
创建完成后,点击账号名进入账号管理,开启G套装全网及委托功能。开启此功能后,.0客户端会自动生成G套装进行管理
此时记录API .0客户端ID,后面会用到。
二、G Suit 控制台授权 API 服务帐号管理1、将 API .0 客户端 ID 添加到 G Suit 中
登录
向后滚动谷歌开发者账号注册,找到高级设置,然后单击管理 API 客户端访问
在客户端名称部分,添加刚才创建API服务帐户时生成的客户端ID。在scope部分,填写.0认证中提供的scope URL。
比如在奔利中,我们需要管理G Suit所有域下的所有用户,所以奔利的范围
查看和您的用户:
2、关于范围
对于不同功能的API请求,在请求开始前的.0认证阶段,需要提供一个作用域来请求一个token。对于获取到的token,只有这个Scope的范围的访问权限。
API涉及的用户请参考以下链接:
并且,在开发文档中,每个函数的详细描述都会标明该函数需要请求的范围
3、在 G Suit 中授权服务帐号管理用户权限
API 服务帐号和 Scope 范围限制 API 调用权限。没有这两个前提条件,API接口就无法正常工作。
但是,因为我们在这个例子中调用的 API 最终实现了对 G Suite 中所有用户的管理。因此,需要在G Suit的权限体系下对API进行授权。
(内部权限划分真的很详细)
通过.0后,有两种方法可以让服务账号拥有整个域账号的管理权限。
1、授权API应用可以管理所有用户。
2、创建一个 G Suit 用户管理员账户,然后在进行 API 调用时将身份委托给该账户。
说实话,尽管第一种方法听起来很简单,但在实践中,委托身份的方式实际上更简单。
3.1 授权API应用管理所有用户。
此方法截图太长,只有文字说明
1)访问 G Suit 控制台->安全->设置->API 权限->应用访问控制->管理 3rd 方应用访问权限->添加应用->OAuth 应用名称或客户端 ID
2)输入 API .0 客户端 ID 并点击搜索
3)如果输入的客户端ID正确,可以找到之前创建的API认证客户端
4)单击“添加”按钮添加 API 应用程序。
5)找到刚刚添加的应用,点击右侧,配置为可信。
3.2、通过委派管理员身份获得管理员权限
在获取 .0 阶段,使用 .方法来委派具有管理权限的用户身份。
三、API接口调用示例1、SDK开发环境安装
pip 安装提供的 SDK 包
pip install google-api-python-client
pip install google-ads
pip install oauth2client
2、 SDK 仓库地址3、 Admin SDK 文档4、 OAuth 2.0 文档5、本例中的示例代码
#coding=utf-8
import datetime
import os
import re
import sys
import time
import requests
import httplib2
from googleapiclient.discovery import build
from google.oauth2 import service_account
SCOPES = [‘https://www.googleapis.com/auth/admin.directory.user‘]
SERVICE_ACCOUNT_FILE = ‘./account_manager_service_account_cc97f7d70a741.json‘
#授权空间(scope)和授权秘钥
#授权的JSON文件,参见第一章节第4节中申请服务账号时创建的JSON秘钥文件。
class APIrequest:
def get_credentials():
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
#授权应用访问G suit控制台,获取授权信息
credentials = credentials.with_subject(‘[email protected]‘)
#委派管理员权限
return credentials
def get_user_data(credentials,userKey_in):
#获取用户信息
try:
service = build("admin", "directory_v1", credentials=credentials)
results = service.users().get(userKey=userKey_in).execute()
except Exception as err:
raise err
else:
return results
def update_user_password(credentials,userKey_in,password_in):
try:
update_data={"password": password_in,"changePasswordAtNextLogin": "true"}
service = build("admin", "directory_v1", credentials=credentials)
results = service.users().update(userKey=userKey_in,body=update_data).execute()
except Exception as err:
raise err
else:
return results
def suspend_user(credentials,userKey_in):
try:
update_data={"suspended": "true"}
service = build("admin", "directory_v1", credentials=credentials)
results = service.users().update(userKey=userKey_in,body=update_data).execute()
except Exception as err:
raise err
else:
return results
def add_user(credentials,primaryEmail,familyName,givenName,password):
try:
insert_data={
"name": {
"familyName": familyName,
"givenName": givenName,
},
"password": password,
"primaryEmail": primaryEmail,
"changePasswordAtNextLogin": "true"
}
service = build("admin", "directory_v1", credentials=credentials)
results = service.users().insert(body=insert_data).execute()
except Exception as err:
raise err
else:
return results
def main():
sys.argv[1]=‘suspend_user‘
sys.argv[2]=‘[email protected]‘
sys.argv[3]=‘P@ssw0rd123123123444‘
sys.argv[4]=‘new‘
sys.argv[5]=‘user‘
method=sys.argv[1]
credentials=APIrequest.get_credentials()
try:
if method=="update_password":
userKey=sys.argv[2]
password=sys.argv[3]
APIrequest_get_data=APIrequest.update_user_password(credentials,userKey,password)
#print(APIrequest_get_data)
if method=="get_user_info":
userKey=sys.argv[2]
APIrequest_get_data=APIrequest.get_user_data(credentials,userKey)
print(APIrequest_get_data)
if method=="suspend_user":
userKey=sys.argv[2]
APIrequest_get_data=APIrequest.suspend_user(credentials,userKey)
#print(APIrequest_get_data)
if method=="add_user":
primaryEmail=sys.argv[2]
password=sys.argv[3]
familyName=sys.argv[4]
givenName=sys.argv[5]
APIrequest_get_data=APIrequest.add_user(credentials,primaryEmail,familyName,givenName,password)
#print(APIrequest_get_data)
except Exception as err:
print(err)
else:
print("200:OK")
if __name__ == ‘__main__‘:
main()
6、API 返回数据
API 以 JSON 格式返回数据。比如本例中查询用户信息,会得到如下信息。
JSON具体字段说明:
过去的评论:
谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
原文链接:API服务账号和Admin管理Gsuit内对API应用授权@,转载请注明来源!