google-api-dotnet-client - 从 DirectoryService 收到权限不足错误

标签 google-api-dotnet-client

我正在尝试设置 c# 代码来管理我们的 Google 域。

每当我从 DirectoryService api 调用 service.Users.List() 或任何其他方法时,我都会收到此错误。

Google.Apis.Requests.RequestError

Insufficient Permission [403]

Errors [

    Message[Insufficient Permission] Location[ - ] Reason[insufficientPermissions] Domain[global]

]

我遵循了 OAuth 设置的所有说明。我使用的帐户是域管理员。

当我将它与 GAM.exe 一起使用来执行相同的操作时,我使用的客户端 secret 文件工作正常。这让我相信我在我的代码中做错了什么。

下面是我查询用户的代码,有什么我遗漏的吗?
        static void Main(string[] args)
    {
        var applicationName = "App Project Name";
        var userName = "admin@domain.com";
        var clientID = "clientIDfromAPIcredentialpageonconsole.developers.google.com";

        UserCredential credential;

        using (var stream = new FileStream("C:\\gam\\client_secrets.json", FileMode.Open, FileAccess.Read))
        {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new[] { DirectoryService.Scope.AdminDirectoryOrgunit, DirectoryService.Scope.AdminDirectoryUser },
                userName,
                CancellationToken.None, null).Result;
        }

        var service = new DirectoryService(new BaseClientService.Initializer() 
            { 
                ApplicationName = applicationName, 
                HttpClientInitializer = credential 
            });

        var list = service.Users.List();

        var users = list.Execute();
    }
}

最佳答案

2个选项:

  • 您没有包含正确的 Scope。你确定 DirectoryService.Scope.AdminDirectoryOrgunit、DirectoryService.Scope.AdminDirectoryUser 就够了吗?
  • 您是否在控制台中启用了 API?更多信息请访问:https://developers.google.com/api-client-library/dotnet/get_started#auth , 在 https://console.cloud.google.com/project 中寻找您的项目并确保您启用了 Directory Admin API。

  • 如果这些选项之一有效或您仍然缺少其他东西,请更新此线程。

    关于google-api-dotnet-client - 从 DirectoryService 收到权限不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953024/

    相关文章:

    c# - .NET - 如何使用 OAuth2.0 和 Windows 服务的离线访问将视频上传到 YouTube

    c# - Gmail API - 值 '= Get Labels google-api-dotnet-client/1.25.0.0 (gzip)' 的格式无效

    c# - 列出 Google Drive api 中的文件会导致系统格式异常

    c# - 适用于 .NET 的 Analytics Reporting API V4 客户端库

    google-analytics - AdSense/发布商相关指标的 Google.Apis.Requests.RequestError

    c# - Google Drive API 不从 IIS 上传文件

    c# - 无法安装 NuGet 包 : Falling back to NuGet Local Cache

    c# - 如何在 C# 中读取 (Google.Apis.Drive.v3.Data.File)?

    google-api - Google API 1.8.1 - GoogleWebAuthorizationBroker.AuthorizeAsync 在 Windows 服务下挂起

    c# - ASP.NET MVC C# Google Drive API 重定向不匹配 URI