首页 » 谷歌 » API服务账号和Admin管理Gsuit内对API应用授权@

API服务账号和Admin管理Gsuit内对API应用授权@

 

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌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应用授权@,转载请注明来源!

0