只是尝试仔细阅读Google Dotnet API Admin SDK。
当我尝试检索所有群组的列表时,我遇到了一些错误。我仍然对文档(使用哪些方法或功能等)感到困惑。
我现在的代码:
using System;
using System.IO;
using System.Threading;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Google.Apis.Admin.Directory.directory_v1;
using Google.Apis.Admin.Directory.directory_v1.Data;
namespace GoogleConsoleApp
{
class Program
{
static void Main(string[] args)
{
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { DirectoryService.Scope.AdminDirectoryGroup, DirectoryService.Scope.AdminDirectoryGroupReadonly },
"user", CancellationToken.None, new FileDataStore("Tasks.Auth.Store")).Result;
}
var dirSvc = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Groups API Sample",
});
Groups myGroups = dirSvc.Groups.List().Execute();
差点错误说:
Unhandled Exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Bad Request [400]
Errors: [Message [Bad Request] Location [ - ] Reason[badRequest] Domain[global]]
我已经在Developer's Console中启用了必要的API。
对此有任何帮助将不胜感激。
更新: 我也尝试过这种方法(按照documentation):
Google.Apis.Admin.Directory.directory_v1.GroupsResource.ListRequest lreq = new GroupsResource.ListRequest(dirSvc);
Groups grp2 = lreq.Execute();
但我仍然得到同样的错误。
答案 0 :(得分:3)
您需要明确设置请求的域。错误在于假设如果你像其他类型的请求那样将域留空,那么它只会搜索全局域。在这种情况下,它会尝试搜索客户的组,这也是空白的。来自api spec。
中的注释检索时:
- 子域的所有组 - 将domain参数与域名一起使用。
- 帐户的所有组 - 将customer参数与my_customer或帐户的customerId值一起使用。作为一个帐户 管理员,使用字符串my_customer来表示您的帐户 顾客ID。如果您是访问转售客户的经销商 帐户,使用转售帐户的customerId。对于customerId值 在“检索a中的所有用户”中使用帐户的主域名 域操作的请求。生成的响应具有customerId 值。
- 同时使用域和客户参数 - API返回域的所有组。
- 未使用域和客户参数 - API会返回与my_customer关联的帐户的所有组。这是 发出API请求的管理员的帐户customerId。
有效的示例:
GroupsResource.ListRequest groupRequest = _service.Groups.List();
groupRequest.Domain = "YourDomain";
Groups domainGroups = groupRequest.Execute();
不起作用的示例会抛出完全相同的错误:
GroupsResource.ListRequest groupRequest = _service.Groups.List();
Groups domainGroups = groupRequest.Execute();