使用 Google 数据传输 API 的插入方法开始传输

Using the insert method of the Google Data Transfer API to start a transfer

我正在尝试使用 Google Admin SDK Data Transfer APItransfers:insert 方法。我作为我域的超级管理员帐户执行此 API 调用。我已验证 API 访问 已为我们的域启用,并且超级管理员管理员角色有权使用数据传输 API.

我正在 this page 上的 APIs 资源管理器中对此进行测试。

55656082996 是我从 applications:list APIs 资源管理器中为 Google 驱动器获得的 ID 字符串。

要求:

POST https://www.googleapis.com/admin/datatransfer/v1/transfers?key={YOUR_API_KEY}
{
 "oldOwnerUserId": "olduser@ourdomain.com",
 "newOwnerUserId": "newuser@ourdomain.com",
 "applicationDataTransfers": [
  {
   "applicationId": "55656082996"
  }
 ]
}

响应:

400 OK
- SHOW HEADERS -
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid value for: Invalid oldOwnerUserId."
   }
  ],
  "code": 400,
  "message": "Invalid value for: Invalid oldOwnerUserId."
 }
}

无论我使用电子邮件地址还是用户名,我都会得到相同的 "Invalid value for: Invalid oldOwnerUserId." 回复。我也尝试从响应中排除 applicationDataTransfers 数组,但这也没有用。

文档没有这样说,但是 ID 不能像所有其他 Google API 一样是用户的电子邮件地址,而是需要是用户的数字 ID,您可以开始使用 Users:get Directory API method.

我通过 Google 搜索和遇到 this documentation 来解决这个问题,他们在 oldOwnerUserId 上说“# ID

除了上面的回答。

以下是如何从 Python 中的 Gsuite API 获取员工 ID 3.*

def create_directory_service():
    credentials = cls.get_credentials(scopes=['https://www.googleapis.com/auth/admin.directory.user'])
    return build('admin', 'directory_v1', credentials=credentials, cache_discovery=Fals


service = create_directory_service()                                          

old_owner_google_id = service.users().get(userKey=old_owner).execute()['id']
new_owner_google_id = service.users().get(userKey=new_owner).execute()['id']