使用Postman访问OAuth 2.0 Google API

Sai*_*Sai 56 google-api oauth-2.0 google-api-client postman google-oauth2

我正在尝试使用Postman Chrome应用程序访问Proximity Google API.我已经关注邮递员和谷歌开发网站的教程,但我仍然收到401错误消息.

我在做什么?

  • 第1步 - 启用Proximity API:

In order to use Proximity API, it has to be first enabled in Google Dev console. Using this tutorial I have enabled support for Proximity API for my project

  • Step 2 - Get the credentials:

According to this tutorial, I need to get client ID and secret. This is where I am confused. Credentials->Add credentials->OAuth2.0 client ID->select Chrome App radio button (since I am using Postman)->enter last part of Postman's Chrome Web store URL [which is fhbjgbiflinjbdggehcddcbncdddomop]->hit create button These steps will only generate a client ID, not a secret..am I doing something wrong?

From the Google Dev console, one can download an JSON file which has client id, auth URI and Token URI 在此输入图像描述

我下载了这个,但如果我使用Postman,这没有什么帮助.我猜这个JSON文件可以包含在JS应用程序中.

  • 第3步 - 使用Postman测试API

在此输入图像描述

我得到了什么? 在此输入图像描述

并且,一旦我点击调试URL,我会看到以下屏幕

在此输入图像描述

小智 62

邮递员将查询模仿Web应用程序的Google API

生成OAuth 2.0令牌:

  1. 确保已启用Google API
  2. 创建OAuth 2.0客户端ID

    • 转到Google控制台 - > API - > OAuth许可屏幕
      • 添加getpostman.com到授权域.单击保存.
    • 转到Google控制台 - > API - >凭据
      • 单击"创建凭据" - >"OAuth客户端ID" - >"Web应用程序"
        • 姓名:'getpostman'
        • 授权重定向URI: https://www.getpostman.com/oauth2/callback
    • 复制生成的Client IDClient secret字段以供以后使用
  3. 在Postman中选择"授权"选项卡,然后选择"OAuth 2.0"类型.点击"获取新访问令牌"

    • 填写GET NEW ACCESS TOKEN表格如下
      • 令牌名称:'Google OAuth getpostman'
      • 授权类型:'授权代码'
      • 回调网址: https://www.getpostman.com/oauth2/callback
      • 身份验证网址: https://accounts.google.com/o/oauth2/auth
      • 访问令牌网址: https://accounts.google.com/o/oauth2/token
      • 客户端ID:Client ID在步骤2中生成(例如,'123456789012-abracadabra1234546789blablabla12.apps.googleusercontent.com')
      • 客户端密钥:Client secret在步骤2中生成(例如,'ABRACADABRAus1ZMGHvq9R-L')
      • 范围:请参阅Google文档了解所需的OAuth范围(例如getpostman.com)
      • 州:空
      • 客户端身份验证:"作为基本身份验证标头发送"
    • 点击"请求令牌"和"使用令牌"
  4. 根据Google文档设置请求的方法,参数和正文

  • 比Google员工更详尽的解释:) (10认同)
  • 我收到“此浏览器或应用程序可能不安全”结果 (5认同)
  • 详细,出色的工作。对我有用 (2认同)
  • 无可挑剔的答案。非常感谢 ! (2认同)
  • 此流程不再有效:Google 禁止在主要浏览器之外进行身份验证。Postman 团队表示他们正在开发“使用浏览器授权”功能 - https://github.com/postmanlabs/postman-app-support/issues/7700 (2认同)
  • 另请注意,范围由常规空格分隔,以防您需要多个范围。就像“https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.userschema” (2认同)

小智 42

我到目前为止找到的最好的方法是去Oauth游乐场:https://developers.google.com/oauthplayground/

  1. 选择相关的google api类别,然后在UI中选择该类别中的范围.
  2. 单击"授权API"蓝色按钮获取授权代码.通过单击蓝色按钮来交换令牌的授权代码.
  3. 存储OAuth2令牌并使用它,如下所示.

在REST API请求的HTTP标头中,添加:"授权:承载".在这里,授权是关键,而"承载者".例如:"授权:bearer za29.KluqA3vRtZChWfJDabcdefghijklmnopqrstuvwxyz6nAZ0y6ElzDT3yH3MT5"

  • 这个工作流程解决了我的问题!为了补充说明,在“交换令牌的授权代码”之后,我将值复制到“访问令牌”字段中,并将其用作邮递员上的授权载体 (2认同)

Zen*_*ahr 17

当前的答案已过时。这是最新的流程:

此处概述的方法仍然有效(10.12.2020),正如 alexwhan 所确认的那样。

我们将在示例中使用YouTube 数据 API。进行相应的更改。

确保您已为您的项目启用所需的 API

创建 OAuth 2.0 客户端

  1. 访问 https://console.cloud.google.com/apis/credentials
  2. 单击创建凭据
  3. 选择OAuth 客户端 ID
  4. 对于应用程序类型,选择Web 应用程序
  5. 添加名称
  6. 授权重定向 URI添加以下URI
https://oauth.pstmn.io/v1/callback
Run Code Online (Sandbox Code Playgroud)
  1. 点击保存
  2. 单击您刚刚生成的 OAuth 客户端
  3. 顶栏中单击DOWNLOAD JSON并将文件保存在您机器上的某个位置。

我们稍后将使用该文件来验证 Postman。

通过 OAuth 2.0 客户端授权 Postman

  1. TYPE下的Auth选项卡中,选择OAuth 2.0
  2. 对于访问令牌,输入在我们在步骤 9 中下载client_secret_[YourClientID].json文件中找到的访问令牌
  3. 单击获取新访问令牌
  4. 确保您的设置如下:

单击此处查看设置

您可以在 .json 文件中找到您需要的所有其他内容。

  1. 单击请求令牌
  2. 将打开一个新的浏览器选项卡/窗口
  3. 浏览器选项卡打开后,通过相应的 Google 帐户登录
  4. 接受同意屏幕
  5. 完毕

忽略浏览器消息“不安全”等。这将显示,直到您的应用程序被谷歌官员筛选。在这种情况下,它将始终显示,因为 Postman 是应用程序。

  • 这怎么两年过去了还没有选票。这是唯一仍然有效的解决方案 (7认同)
  • 您添加到Google控制台的回调URL应该是https://oauth.pstmn.io/v1/browser-callback (3认同)
  • 2022 年 3 月 5 日完美!编辑我只想补充一点,对于添加评论和其他更高权限的任务,youtube.force-ssl 是一个合适的范围。 (2认同)

小智 11

  1. 转到https://console.developers.google.com/apis/credentials
  2. 创建Web应用程序凭据

邮差API访问

  1. 在Postman中将这些设置与oauth2一起使用:

SCOPE = https://www.googleapis.com/auth/admin.directory.userschema

发布https://www.googleapis.com/admin/directory/v1/customer/customer-id/schemas

{
  "fields": [
    {
      "fieldName": "role",
      "fieldType": "STRING",
      "multiValued": true,
      "readAccessType": "ADMINS_AND_SELF"
    }
  ],
  "schemaName": "SAML"
}
Run Code Online (Sandbox Code Playgroud)
  1. 修补用户使用情况:

SCOPE = https://www.googleapis.com/auth/admin.directory.user

PATCH https://www.googleapis.com/admin/directory/v1/users/admin@email.com

 {
  "customSchemas": {
     "SAML": {
       "role": [
         {
          "value": "arn:aws:iam::123456789123:role/Admin,arn:aws:iam::123456789123:saml-provider/GoogleApps",
          "customType": "Admin"
         }
       ]
     }
   }
}
Run Code Online (Sandbox Code Playgroud)


Sai*_*Sai 7

我发现我没有为正确的应用类型生成凭据.
如果您使用Postman测试Google oAuth 2 API,请选择
凭据 - >添加凭据 - > OAuth2.0客户端ID - > Web应用程序.

在此输入图像描述


小智 5

这是一个老问题,但它没有选择答案,我只是自己解决了这个问题。这是我的解决方案:

  1. 确保您首先设置为使用您的 Google API。请参阅 Google 的先决条件列表。我在使用“Google 我的商家”,所以我也经历了它的入门流程。

  2. OAuth 2.0 playground 中,步骤 1 要求您选择要进行身份验证的 API。选择或输入适用于您的案例(在我的 Google 我的商家案例中,我必须将https://www.googleapis.com/auth/plus.business.manage输入到“输入您自己的范围”输入字段中)。注意:这与入门指南的“发出简单的 HTTP 请求”部分的第 6 步中描述的内容相同

  3. 假设身份验证成功,您应该在 OAuth 操场的“步骤 1 的结果”步骤中得到一个“访问令牌”。将此令牌复制到剪贴板。

  4. 打开 Postman 并根据需要打开您想要的任何集合。

  5. 在 Postman 中,确保选择“GET”作为请求类型,然后单击请求类型下拉列表下方的“授权”选项卡。

  6. 在授权“TYPE”下拉菜单中,选择“Bearer Token”

  7. 将您之前从 OAuth 游乐场复制的“访问令牌”粘贴到 Postman 中显示的“令牌”字段中。

  8. 差不多好了!要测试是否有效,请将https://mybusiness.googleapis.com/v4/accounts/放入 Postman 的主 URL 输入栏中,然后单击发送按钮。您应该在响应中得到一个 JSON 帐户列表,如下所示:

    
    {
        "accounts": [
            {
                "name": "accounts/REDACTED",
                "accountName": "REDACTED",
                "type": "PERSONAL",
                "state": {
                    "status": "UNVERIFIED"
                }
            },
            {
                "name": "accounts/REDACTED",
                "accountName": "REDACTED",
                "type": "LOCATION_GROUP",
                "role": "OWNER",
                "state": {
                    "status": "UNVERIFIED"
                },
                "permissionLevel": "OWNER_LEVEL"
            }
        ]
    }
    
    Run Code Online (Sandbox Code Playgroud)