0

我们正在尝试为服务器到服务器应用程序实现 OAuth 2.0 最终动机是调用 Google API 来读取 GSuite 用户。

用于服务器到服务器应用程序的 OAuth 2.0 的 Google 文档是 .. - https://developers.google.com/identity/protocols/OAuth2ServiceAccount

用于读取 GSuite 用户列表的 API - https://developers.google.com/admin-sdk/directory/v1/reference/groups/list

根据文档,我们可以使用“Google API 客户端库”或“HTTP/REST”但是我们的要求是使用 HTTP/REST。

我们已成功完成以下步骤。

  1. 创建服务帐户。
  2. 将域范围的权限委派给服务帐户。
  3. 使用 HTTP/REST 的授权 API 调用。

在上面的第 3 步之后,我们可以通过 POSTMAN 成功获取“访问令牌”。

Postman 请求获取 access_token 成功,如下所示。

HTTP POST request :https://oauth2.googleapis.com/token

Body parameters: 
grant_type:urn:ietf:params:oauth:grant-type:jwt-bearer
assertion:The JWT, including signature. 

successful response :
{
"access_token": "ya29.c.EmmOB0vXrihl6nkZNr2gS1nKc4LypBlg3I1bZL2BUvPfZ53rs91fSA2TXR25TvtrZb551sdg1WwHnxg5VYWVC-SEveeypZebfwvhdGr9ECXCeuwAmfyV8TDUIN5nsqbZ7IxVyzgkew",
"expires_in": 3600,
"token_type": "Bearer"
}

但是在“调用 Google API”时出现错误/异常

使用我们得到的 access_token 调用 API 时出错。

1.Get Request via POSTMAN : Read all GSuite users  
https://www.googleapis.com/admin/directory/v1/users/?customer=my_customer
Header:Bearer ya29.c.EmmOB0vXrihl6nkZNr2gS1nKc4LypBlg3I1bZL2BUvPfZ53rs91fSA2TXR25TvtrZb551s dg1WwHnxg5VYWCVC-SEveeypZebfwvhdGr9ECXCeuwAmfyV8TDUIN5nsqbZ7IxVyzgkewfZ0

error response :
{
 "error": {
    "errors": [
        {
            "domain": "global",
            "reason": "backendError",
            "message": "Service unavailable. Please try again"
        }
    ],
    "code": 503,
    "message": "Service unavailable. Please try again"
 }
}

2.通过POSTMAN获取请求:阅读GSuite Groups

https://www.googleapis.com/admin/directory/v1/groups/? 
customer=my_customer
Header : Bearer ya29.c.EmmOB0v-Xrihl6nkZNr2gS1nKc4LypBlg3I1bZL2BUvPfZ53rs91fSA2TXR25TvtrZb551sdg1WwHnxg5VYWCVC-SEveeypZebfwvhdGr9ECXCeuwAmfyV8TDUIN5nsqbZ7IxVyzgkewfZ0

error response :
{
  "error": {
    "errors": [
        {
            "domain": "global",
            "reason": "notFound",
            "message": "Domain not found."
        }
    ],
    "code": 404,
    "message": "Domain not found."
 }
}
4

1 回答 1

0

似乎您不需要传递请求参数客户。像这样试试

https://www.googleapis.com/admin/directory/v1/groups/my_customer

更多关于这里

https://www.googleapis.com/admin/directory/v1/users/my_customer

更多关于这里

于 2019-10-03T16:40:50.763 回答