谷歌Dotnet API -管理SDK组-得到坏的请求错误

本文关键字:请求 错误 Dotnet API 管理 SDK 谷歌 | 更新日期: 2023-09-27 18:10:10

只是尝试阅读Google Dotnet API管理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]]

我已经在开发者控制台中启用了必要的api。

如有任何帮助,我将不胜感激。

更新:我也尝试了这个方法(按照文档):

Google.Apis.Admin.Directory.directory_v1.GroupsResource.ListRequest lreq = new GroupsResource.ListRequest(dirSvc);
            Groups grp2 = lreq.Execute();

但是我仍然得到相同的错误

谷歌Dotnet API -管理SDK组-得到坏的请求错误

您需要显式地设置请求的域。如果您像其他类型的请求一样将域留空,则假设它只会搜索全局域,这是错误的。在本例中,它尝试搜索客户的组,这也是空白的。来自api规范的注释

检索时:

  • 子域的所有组-使用带域名的domain参数
  • 帐户的所有组-使用带有my_customer或帐户的customerId值的customer参数。作为一个帐户管理员,使用字符串my_customer来表示您的帐户customerId。如果你是一个经销商访问转售客户的帐户,使用转售帐户的customerId。获取customerId值在检索a中的所有用户中使用帐户的主域名域操作的请求。得到的响应具有customerId价值。
  • 同时使用域和客户参数- API返回该域的所有组。
  • 不使用domain和customer参数- API返回与my_customer关联的帐户的所有组。这是

示例:

GroupsResource.ListRequest groupRequest = _service.Groups.List();
groupRequest.Domain = "YourDomain";
Groups domainGroups = groupRequest.Execute();

不工作的例子,将抛出完全相同的错误:

GroupsResource.ListRequest groupRequest = _service.Groups.List();
Groups domainGroups = groupRequest.Execute();