Google Admin SDK-异常access_denied请求的客户端未经授权

Fab*_*ian 1 google-api-dotnet-client google-admin-sdk

我希望有人可以帮助我。

请看下面的源代码。结束时单击“执行”。我将收到以下错误:

未处理Google.Apis.Auth.OAuth2.Responses.TokenResponseException _HResult = -2146233088 _message =错误:“ access_denied”,说明:“未授权请求的客户端。”,Uri:“”

我已经尝试了很多东西。创建用户,列表组等(具有正确的作用域)等,但是每次遇到相同的错误时。

我已经创建了一个服务帐户,并且Google Developers Console中的所有API都设置为“ on”。我用于模拟的用户是完全管理员。

我尝试了几件事,但是我必须做一些愚蠢的事情。该代码看起来很像Stack Overflow上的另一个问题:Google Admin SDK无法创建用户-禁止例外403, 但是我的代码无法正常工作。谁能告诉我我忘记了什么?

private static readonly string[] Scopes = new string[] { DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryGroup, DirectoryService.Scope.AdminDirectoryGroupMember };

    static void Main(string[] args)
    {

        String serviceAccountEmail = "***@developer.gserviceaccount.com";
        var certificate = new X509Certificate2(@"file.p12", "notasecret", X509KeyStorageFlags.Exportable);
        ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               Scopes = Scopes,
               User = "admin email address",

           }.FromCertificate(certificate));
        var service = new DirectoryService(new BaseClientService.Initializer()
       {
           HttpClientInitializer = credential,
           ApplicationName = "User Provisioning",
       });

        User newuserbody = new User();
        UserName newusername = new UserName();
        newuserbody.PrimaryEmail = "bbacon@correct.domain";
        newusername.GivenName = "Bob";
        newusername.FamilyName = "Bacon";
        newuserbody.Name = newusername;
        newuserbody.Password = "iambacon";

        Google.Apis.Admin.Directory.directory_v1.Data.User results = service.Users.Insert(newuserbody).Execute();

        Console.WriteLine("Press any key to continue!");
        Console.ReadKey();
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

在管理控制台中,您是否专门授予客户端ID权限?仅在开发人员控制台中打开API是不够的,您必须专门在管理控制台中授予此客户端ID范围访问权限,以使其模拟您域中的用户。

  1. 转到您的Google Apps域的管理控制台。

  2. 从控件列表中选择“安全性”。如果没有列出安全性,请从页面底部的灰色栏中选择“更多控件”,然后从控件列表中选择“安全性”。

  3. 从选项列表中选择高级设置。

  4. 在“身份验证”部分中选择“管理第三方OAuth客户端访问”。

  5. 在客户名称字段中,输入服务帐户的客户ID。

  6. 在“一个或多个API范围”字段中,输入应授予您的应用程序访问权限的范围列表。例如,如果您需要对Google Drive API和Google Calendar API进行域范围的访问,请输入:https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/calendar

  7. 单击授权按钮。

让我知道这是否解决了权限错误。