【发布时间】:2015-07-22 00:58:06
【问题描述】:
当尝试以另一个组的管理员或所有者身份更新组时,我收到一个请求错误:
Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid Input: memberKey [400]
Errors [
Message[Invalid Input: memberKey] Location[ - ] Reason[invalid] Domain[global]
]
这可能是https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3791 中指出的服务问题
我能从 Google 那里得到官方消息吗? Provisioning API 绝对支持它,并且 API 文档表明它可以通过 https://developers.google.com/admin-sdk/directory/v1/guides/manage-group-members#json-response_2 中的响应来判断
编辑:这段代码演示了错误:
DirectoryService service = AuthenticateService();
// Create a group which will contain our group as owner
var containerGroupRequest = service.Groups.Insert(new Group()
{
Name = "Stack Overflow Container Group",
Email = "test_container@" + domain,
Description = "Test Group, Please Ignore"
});
Group containerGroup;
try
{
containerGroup = containerGroupRequest.Execute();
Console.WriteLine("Container Group Created. Id: {0}", containerGroup.Id);
}
catch (Exception ex)
{
Console.WriteLine("Error occured creating group. Unable to continue. Exception: {0}", ex.ToString());
return;
}
// Create a group to use as an owner
var memberGroupRequest = service.Groups.Insert(new Group()
{
Name = "Stack Overflow Member Group",
Email = "test_member@" + domain,
Description = "Test Member Group, Please Ignore"
});
Group memberGroup;
try
{
memberGroup = memberGroupRequest.Execute();
Console.WriteLine("Member Group Created. Id: {0}", memberGroup.Id);
}
catch (Exception ex)
{
Console.WriteLine("Error occured creating group. Unable to continue. Exception: {0}", ex.ToString());
return;
}
Thread.Sleep(5000); // Give some time for things to update
// Add the member group to the container group as a member
var memberRequest = service.Members.Insert(new Member
{
Email = memberGroup.Email,
Role = "MEMBER"
}, containerGroup.Id);
Member member;
try
{
member = memberRequest.Execute();
Console.WriteLine("Member added to containerGroup. MemberId: {0}", member.Id);
}
catch (Exception ex)
{
Console.WriteLine("Adding member to container group failed. Error: {0}", ex.ToString());
return;
}
Thread.Sleep(5000); // Give some time for things to update
// Update the membership so the group is an owner
member.Role = "OWNER";
var ownerRequest = service.Members.Update(member, containerGroup.Id, member.Email);
Member owner;
try
{
owner = ownerRequest.Execute(); // <!-- This is where the 400 error occurs.
Console.WriteLine("Member updated to be owner. MemberId: {0}", owner.Id);
}
catch (Exception ex)
{
Console.WriteLine("Updating membership to ownership failed. Error: {0}", ex.ToString());
return;
}
它的输出:
Container Group Created. Id: 01ci93xb1y7qh7z
Member Group Created. Id: 04i7ojhp23eifv2
Member added to containerGroup. MemberId: 04i7ojhp23eifv2
Updating membership to ownership failed. Error: The service admin has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid Input: memberKey [400]
Errors [
Message[Invalid Input: memberKey] Location[ - ] Reason[invalid] Domain[global]
]
at Google.Apis.Requests.ClientServiceRequest`1.Execute() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis\Apis\Requests\ClientServiceRequest.cs:line 96
at GOwnerFailTest.Program.GroupTest() in d:\Repo\GSync\GOwnerFailTest\Program.cs:line 103
【问题讨论】:
-
1.我会附上您正在使用的代码。 2. 您能否使用 Google API Explorer - developers.google.com/apis-explorer/#p 检查您的调用是否有效?
-
今天晚些时候我会写一段演示代码。但是它在 API Explorer 中也失败了;不管我是使用 Group ID 还是 Group Email 作为 memberKey。
-
@peleyal 支持人员告诉我,从未支持作为所有者的群组。这显然是它首先工作的供应 API 的一个错误(供应 API 参考另有说明)。是这样吗?
-
我不是任何特定 API 的专家,我是库及其生成库的维护者(我们有 100 多个用于驱动器、存储、分析、youtube 等的库)。因此,我对特定 API 没有足够的经验。如果 Google API Explorer 对您不起作用,则意味着不会发生任何奇迹。 .NET 库也不适合您。
-
@peleyal 很公平。有没有办法联系 Admin SDK 团队?
标签: google-admin-sdk google-api-dotnet-client