用于请求用户列表的 C# Google API 返回“badRequest”

问题描述 投票:0回答:1

我这几天一直在寻找这方面的信息。我相信我已正确设置与 API 相关的所有内容以供访问,但我不断收到此错误: 服务管理员抛出异常。

HttpStatusCode is BadRequest.
Google.Apis.Requests.RequestError
Bad Request [400]
Errors [
        Message[Bad Request] Location[ - ] Reason[badRequest] Domain[global]
]

Google.GoogleApiException: The service admin has thrown an exception. HttpStatusCode is BadRequest. Bad Request
   at Google.Apis.Requests.ClientServiceRequest`1.ParseResponse(HttpResponseMessage response)
   at Google.Apis.Requests.ClientServiceRequest`1.ExecuteAsync(CancellationToken cancellationToken)
   at Google.Apis.Requests.ClientServiceRequest`1.ExecuteAsync()

我运行代码的方法:

string[] googleScopes = {DirectoryService.Scope.AdminDirectoryUser};
public async Task connectToGoogle()
        {
            try
            {
                GoogleCredential credential = GoogleCredential.FromFile(googleTokenPath).CreateScoped(googleScopes);//.CreateWithUser(googleAdminEmail);
                
                
                var service = new DirectoryService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "TestAPIProject"
                });
                
                var request = service.Users.List();
                request.Customer = "test.example.com";
                request.Domain = "test.example.com";
                var result = await request.ExecuteAsync();
                
                
                Console.WriteLine(result);
                
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e);
            }
        }
据我所知,JSON 令牌对此是正确的。我相信我传递的客户或域是问题所在,但我尝试了很多不同的选项,但仍然收到 badRequest。

我正在使用 Google Workspace 服务帐号发送请求。确保使用它而不是 OAuth 令牌。

c# google-api google-admin-sdk google-api-dotnet-client google-directory-api
1个回答
0
投票
首先,您注释掉了模拟所需的 CreateWithUser。之后我会检查您的客户以确保这是正确的。

using Google.Apis.Auth.OAuth2; using Google.Apis.Admin.Directory.directory_v1; using Google.Apis.Services; Console.WriteLine("Hello, Google Calendar Workspace sample!"); var scopes = new[] { DirectoryService.Scope.AdminDirectoryUser }; const string workspaceAdmin = "[email protected]"; const string credentials = @"C:\Development\FreeLance\GoogleSamples\Credentials\workspaceserviceaccount.json"; var credential = GoogleCredential.FromFile(credentials).CreateScoped(scopes).CreateWithUser(workspaceAdmin); var services = new DirectoryService(new BaseClientService.Initializer() { HttpClientInitializer = credential, }); var request = services.Users.List(); request.Customer = "my_customer"; request.MaxResults = 10; request.OrderBy = UsersResource.ListRequest.OrderByEnum.Email; var results = request.Execute(); var users = results.UsersValue; if (users.Count == 0) { Console.WriteLine("No Users"); return; } Console.WriteLine("Users:"); foreach (var user in users) { Console.WriteLine($"{user.PrimaryEmail} ({user.Name.FullName})"); }
    
© www.soinside.com 2019 - 2024. All rights reserved.