【问题标题】:What is the URL to authenticate Gsuite users using curl?使用 curl 对 Gsuite 用户进行身份验证的 URL 是什么?
【发布时间】:2018-11-15 23:38:47
【问题描述】:

我想对 Gsuite 用户进行身份验证,以便他们能够从我公司的应用程序中创建群组,我必须使用 CURL 进行此操作,我应该向哪个 URL 发送发布请求?

例如,如果我想让用户登录 Google plus,我会点击这个 url

CURLOPT_URL => "https://www.googleapis.com/plus/v1/people/me?access_token=" . $access_token,

Gsuite 的网址是什么?

【问题讨论】:

  • 我联系了 Gsuite 支持,他们让我在这里提问,我照做了。
  • 您是否查看过 G Suite 管理员设置 (developers.google.com/admin-sdk/admin-settings) 的文档?
  • @MαπμQμαπkγVπ.0 我已经阅读了它,没有发现任何有用的东西,我错过了什么吗?此外,该页面上有一个横幅,上面写着Warning: Admin Settings API will be deprecated soon. 那么这真的是要走的路吗?
  • 您展示的以CURLOPT_URL 开头的方法不会对用户进行身份验证。您正在使用已通过身份验证的 OAuth 2.0 访问令牌。如果您的目标是使用 curl 的 authentication,则不能。您必须实现需要回调的 OAuth 2.0 流程。如果您的目标是使用现有令牌访问目录 API,那会更容易https://www.googleapis.com/admin/directory/v1。重新考虑您的问题并编辑您的问题,以便我们为您提供帮助。
  • @JohnHanley 我知道我有一个访问令牌,我的目标是知道访问令牌是否有效。用户从客户端发送访问令牌,我想检查他的令牌是否有效,如果是,我想获取他的信息。

标签: google-admin-sdk google-workspace google-api-javascript-client google-php-sdk


【解决方案1】:

如果您的目标是在 G Suite 中检索有关用户的信息:

CURLOPT_URL => "https://www.googleapis.com/admin/directory/v1/users/john@example.com?access_token=" . $access_token;

注意:请参阅 Directory API,了解如何执行委派。这是必需的。如果没有启用Domain-wide Delegation,普通访问令牌将无法工作。

您的凭据(访问令牌)需要正确的范围:

https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.user

您的凭据需要正确的委派。

Python 示例:

SCOPES = [
        "https://www.googleapis.com/auth/admin.directory.group",
        "https://www.googleapis.com/auth/admin.directory.user"
        ]

key_file = 'google-directory-api-service-account.json'

SERVICE_ACCOUNT_EMAIL = 'directory@development-123456.iam.gserviceaccount.com'
ADMIN_EMAIL = 'gsuite-admin@example.com'

credentials = service_account.Credentials.from_service_account_file(
                        key_file,
                        scopes = SCOPES)

credentials = credentials.with_subject(ADMIN_EMAIL)

Domain-wide Delegation

有关我在设置 G Suite 访问权限时看到的常见错误,请参阅此答案的底部。

如果您的目标是检索存储在 Google OAuth 2.0 令牌中的信息:

这些网址需要 Google OAuth 2.0 访问令牌。 alt=json 指定返回 JSON。

您可以在命令提示符下测试的示例:

curl -k "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ACCESS_TOKEN"

curl -k "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=ACCESS_TOKEN"

还有 v3 端点:

curl -k "https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=ACCESS_TOKEN"

设置 API 访问 G Suite 时的常见问题:

  • 访问未配置。 Admin Directory API 之前未在项目 123456789012 中使用或已禁用。

转到 Google 云端控制台。启用Admin SDK 的 API。

  • 无权访问此资源/api。

您没有正确设置域范围的委派。

  • 客户端未经授权无法使用此方法检索访问令牌

您尝试在现有服务帐户上设置域范围的委派。您需要创建一个未分配任何 IAM 角色的新服务帐号。

【讨论】:

  • 太棒了!非常感谢
  • 一切都很好,但我必须加载项目的原始文件,而不是服务的 json 文件,这不起作用,在你的例子中,你似乎使用的是 json 文件你创建的服务,不是项目的json文件,我记错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2017-07-03
  • 1970-01-01
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多