【问题标题】:Google Directory API - 403 [Not Authorized to access this resource/api] on one machine, works on anotherGoogle Directory API - 403 [未授权访问此资源/api] 在一台机器上,在另一台机器上工作
【发布时间】:2013-12-17 20:33:11
【问题描述】:

我一直在测试我的授权码,突然我开始得到:

Not Authorized to access this resource/api [403]
Errors [
    Message[Not Authorized to access this resource/api] Location[ - ] Reason[forbidden] Domain[global]
]

我挠了挠头并尝试了一些东西,但我认为我没有改变任何东西。最终我尝试在另一台机器上运行它。它没有错误地工作。

我正在使用 v1.6 的 Google Directory API .NET 客户端。我已经为此工作了一段时间。当我遇到问题时,我的服务授权正在工作并且正在处理客户授权。当我尝试使用服务凭据进行授权时,我目前遇到了同样的错误。我目前无法检查该进程是否在另一台机器上仍然有效。

有什么想法吗?

编辑

我在两台机器上使用相同的 ClientId。

【问题讨论】:

  • 我首先要看的是 HTTP 标头。
  • 检查cloud.google.com/console/?api=admin (Admin SDK) 是否启用
  • 是的。奇怪:当我尝试那个 URL 时,我得到了一个 404,所以我去了 code.google.com/apis/console(这是我以前使用过的),它被重定向到 cloud.google.com/console!
  • 会不会是一些节流的东西?我可以达到那台机器的授权阈值吗?
  • 您能否提供您尝试运行的确切代码?你使用一些 GoogleWebAuthorizationBroker 吗?

标签: google-admin-sdk google-api-dotnet-client


【解决方案1】:

我遇到了这个帖子,但没有一个答案对我有帮助......结果我在我正在查找的组的域名中输入了一个错字......?‍♂️

GET https://admin.googleapis.com/admin/directory/v1/groups/gruop@sub.example.com
                                                             ^^
=> Error 404 "Resource Not Found: groupKey"

GET https://admin.googleapis.com/admin/directory/v1/groups/group@sbu.example.com
                                                                  ^^
=> Error 403 "Not Authorized to access this resource/api"

因此,如果您收到 403 错误,请检查以确保它不仅仅是伪装的 404 错误?

【讨论】:

    【解决方案2】:

    我也遇到了 403 错误。我通过更正权限解决了它。我在xyz@company.com 下将项目设置到谷歌:

    1. 我必须以我们的超级用户身份登录到 Gmail
    2. 搜索用户xyz
    3. 我选择了用户,然后按下 显示更多
    4. 我点击了0 Admin roles and privileges
    5. 启用“用户管理”,因为我试图提取用户列表

    错误消失了。

    【讨论】:

    • 如果您使用具有域范围委派的 Google 服务帐户,请以超级管理员身份登录并将服务帐户分配给用户管理角色。
    【解决方案3】:

    有人让我的帐户脱离了管理员角色。它在另一台机器上工作的原因是我使用了一个不同的管理员帐户登录,该帐户没有被“管理”。名字只差一个字符,我没有注意到。

    【讨论】:

      【解决方案4】:

      我在收到同样的错误时遇到了这篇文章。我不是管理员角色,但我认为我应该能够看到基本的用户配置文件,因为我可以从联系人访问它。经过更多研究后,我发现了一条很好的信息:https://developers.google.com/admin-sdk/directory/v1/guides/manage-users#retrieve_users_non_admin

      简而言之,将viewType参数设置为domain_public

      这是 C# 中的样子

          var getRequest = directoryService.Users.Get(googleId);
          getRequest.ViewType = UsersResource.GetRequest.ViewTypeEnum.DomainPublic;  
          User directoryUser = getRequest.Execute();
      

      【讨论】:

      • 感谢@Airn,您的回答帮助了我
      • 默认设置为admin :(
      猜你喜欢
      • 1970-01-01
      • 2019-05-19
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多