Google api 使用Google数据传输API的insert方法启动传输

Google api 使用Google数据传输API的insert方法启动传输,google-api,google-apps,google-admin-sdk,Google Api,Google Apps,Google Admin Sdk,我正在尝试使用的传输:插入方法。我作为我域的超级管理员帐户执行此API调用。我已验证已为我们的域启用API访问,并且超级管理员角色具有使用数据传输API的权限 我正在上的API资源管理器中对此进行测试 55656082996是我从API浏览器中为Google Drive获取的ID字符串 请求: POST https://www.googleapis.com/admin/datatransfer/v1/transfers?key={YOUR_API_KEY} { "oldOwnerUserId"

我正在尝试使用的传输:插入方法。我作为我域的超级管理员帐户执行此API调用。我已验证已为我们的域启用API访问,并且超级管理员角色具有使用数据传输API的权限

我正在上的API资源管理器中对此进行测试

55656082996
是我从API浏览器中为Google Drive获取的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."
 }
}
响应:

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."
 }
}

无论我使用的是电子邮件地址还是用户名,我都会得到相同的
“无效值:无效的oldOwnerUserId。”
响应。我还尝试从响应中排除
applicationDataTransfers
数组,但这也不起作用。

文档中没有这样说,但Id不能像在所有其他Google API中那样是用户的电子邮件地址,而是需要是用户的数字Id,您可以使用


我通过谷歌搜索发现了这一点,在谷歌搜索中,除了上面的答案外,他们还通过说“#ID

详细说明了
旧所有者序列ID

下面是如何在Python3中从GSuiteAPI获取员工ID的方法*

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'] 

这是在HTTP请求上传递API密钥的正确语法吗?另外,您是否可以使用服务帐户进行数据传输?对于初学者来说,Google文档确实很缺乏。我不确定将API键作为URL参数传递是否有效,但他们的文档中曾经出现过这样的情况。是的,您可以为此API使用具有域范围委派的服务帐户。有关设置的更多信息-说明针对不同的API,但服务帐户访问令牌生成应相同。