【问题标题】:Using Postman to access OAuth 2.0 Google APIs使用 Postman 访问 OAuth 2.0 Google API
【发布时间】:2015-11-11 15:09:33
【问题描述】:

我正在尝试使用Postman chrome app 访问Proximity Google API。我已经按照邮递员和谷歌开发网站上的教程进行操作,但仍然收到 401 错误消息。

我在做什么?

  • 第 1 步 - 启用 Proximity API:

为了使用 Proximity API,必须首先在 Google 开发控制台中启用它。 使用 this 教程,我为我的项目启用了对 Proximity API 的支持

  • 第 2 步 - 获取凭据:

根据this 教程,我需要获取客户端 ID 和密码。这就是我感到困惑的地方。凭据->添加凭据->OAuth2.0 客户端 ID->选择 Chrome App 单选按钮(因为我使用的是 Postman)->输入 Postman 的 Chrome Web 商店 URL 的最后一部分 [即fhbjgbiflinjbdggehcddcbncdddomop]->点击创建按钮这些步骤只会生成一个客户端 ID,而不是一个秘密。我做错了什么吗?

从 Google Dev 控制台,可以下载一个 JSON 文件,其中包含客户端 id、auth URI 和 Token URI

我下载了这个,但如果我使用 Postman,这对我帮助不大。我猜这个 JSON 文件可以包含在 JS 应用程序中。

  • 第 3 步 - 使用 Postman 测试 API

我得到了什么?

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

【问题讨论】:

    标签: oauth-2.0 google-api google-api-client postman google-oauth


    【解决方案1】:

    Postman 将查询模拟 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 中选择 Authorization 选项卡并选择“OAuth 2.0”类型。点击“获取新的访问令牌”

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

    【讨论】:

    • 比谷歌员工解释得更透彻:)
    • 无可挑剔的答案。非常感谢!
    • 我收到“此浏览器或应用程序可能不安全”结果
    • 此流程不再起作用:Google 禁止在主要浏览器之外进行身份验证。邮递员团队表示他们正在开发“使用浏览器授权”功能 - github.com/postmanlabs/postman-app-support/issues/7700
    • 另请注意,如果您需要多个范围,则范围由常规空格分隔。喜欢https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.userschema
    【解决方案2】:

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

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

    在 REST API 请求的 HTTP 标头中,添加:“Authorization: Bearer”。在这里,授权是关键,而“承载”。例如:“授权:承载 za29.KluqA3vRtZChWfJDabcdefghijklmnopqrstuvwxyz6nAZ0y6ElzDT3yH3MT5”

    【讨论】:

    • 这个工作流程解决了我的问题!只是为了补充说明,在“交换令牌授权码”之后,我复制了“访问令牌”字段中的值并将其用作 Postman 上的授权承载
    【解决方案3】:

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

    mazend 证实,此处概述的方法仍然有效(2021 年 12 月 23 日)。

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

    确保您的项目有 enabled your desired 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
    
    1. 点击保存
    2. 点击刚刚生成的OAuth客户端
    3. 顶部栏中单击下载 JSON,然后将文件保存在您计算机上的某个位置。

    稍后我们将使用该文件对 Postman 进行身份验证。

    通过 OAuth 2.0 客户端授权 Postman

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

    Click here to see the settings

    (另外,多个范围可以如下,空格分隔:“https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profile"

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

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

    【讨论】:

    • 两年后这怎么没有票。这是唯一仍然有效的解决方案
    • 更新了帖子以反映您确认它仍然有效。
    • 我确认它现在也可以工作了。
    【解决方案4】:
    1. 转至https://console.developers.google.com/apis/credentials
    2. 创建 Web 应用程序凭据。

    Postman API Access

    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"
    }
    
    1. 修补用户使用:

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

    补丁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"
             }
           ]
         }
       }
    }
    

    【讨论】:

      【解决方案5】:

      我发现我没有为正确的应用类型生成凭据。
      如果您使用 Postman 测试 Google oAuth 2 API,请选择
      Credentials -> Add credentials -> OAuth2.0 client ID -> Web Application

      【讨论】:

        【解决方案6】:

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

        1. 首先确保您已准备好使用您的 Google API。请参阅 Google 的 list of prerequisites。我正在使用“Google 我的商家”,所以我也经历了它的 Get Started 流程。

        2. OAuth 2.0 playground 中,步骤 1 要求您选择要验证的 API。选择或输入适用于您的案例(在我的 Google 我的商家案例中,我必须在“输入您自己的范围”输入字段中输入 https://www.googleapis.com/auth/plus.business.manage)。 注意:这与Get Started 指南的“发出简单的 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"
                  }
              ]
          }
          

        【讨论】:

          【解决方案7】:

          Google 已更改访问令牌网址:https://accounts.google.com/o/oauth2/token。 现在需要是:https://oauth2.googleapis.com/token

          【讨论】:

            【解决方案8】:

            作为@DimaTx 最佳答案的补充,不要忘记勾选“使用浏览器授权”复选框,正如邮递员团队自己在 github.com/postmanlabs/postman-app-support/issues 中解释的那样/7700

            这将防止/解决“此浏览器或应用程序可能不安全”的结果。

            【讨论】:

              猜你喜欢
              • 2017-08-06
              • 2022-09-28
              • 2013-05-17
              • 1970-01-01
              • 2012-03-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-22
              相关资源
              最近更新 更多