使用Postman访问OAuth 2.0 Google API


77

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

我在做什么?

  • 第1步-启用接近API:

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

  • 第2步-获取凭据:

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

您可以从Google Dev控制台下载一个JSON文件,其中包含客户端ID,身份验证URI和令牌URI 在此处输入图片说明

我下载了此文件,但是如果我使用的是Postman,则无济于事。我猜这个JSON文件可以包含在JS应用程序中。

  • 第3步-使用Postman测试API

在此处输入图片说明

我得到什么? 在此处输入图片说明

而且,一旦我点击了调试网址,就会看到以下屏幕

在此处输入图片说明

Answers:


128

邮递员将查询模仿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. 在邮递员中,选择授权标签,然后选择“ OAuth 2.0”类型。点击“获取新访问令牌”

    • 填写以下“获取新的访问令牌”表单
      • 令牌名称:“ 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文档设置请求的方法,参数和正文

35
比Google员工更全面的解释:)
Gennadiy Ryabkin

1
在我下一个问题似乎与邮递员不支持google 2FA认证有关之前,这似乎一直有效。消息如下:“应用程序正在请求访问您的Google帐户的权限。” 任何想法?
LMG

2
无可挑剔的答案。非常感谢你 !
uribalb

4
我得到“此浏览器或应用程序可能不安全”的结果
坚定

1
此流程不再起作用:Google禁止在主要浏览器之外进行身份验证。邮递员小组表示,他们正在开发“使用浏览器授权”功能-github.com/postmanlabs/postman-app-support/issues/7700
Lev

58

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

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

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


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

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

邮差API访问

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

范围= 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"
         }
       ]
     }
   }
}

8

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

在此处输入图片说明


5

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

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

  2. OAuth 2.0游乐场中,第1步要求您选择要验证的API。选择或输入适合您的情况(在我的Google我的商家中,我必须在“输入您自己的范围”输入字段中输入https://www.googleapis.com/auth/plus.business.manage)。注意:这与“入门指南”的“发出简单的HTTP请求”部分的步骤6中的描述相同

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

  4. 打开邮递员,然后根据需要打开所需的任何集合。

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

  6. 在“授权”类型下拉菜单中,选择“承载者令牌”

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

4

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

正如alexwhan所确认的,此处概述的方法仍然有效(2020年12月10日)。

我们将使用YouTube Data 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
  1. 点击保存
  2. 点击您刚刚生成的OAuth客户端
  3. 顶部栏中,单击“下载JSON”,然后将文件保存在计算机上的某个位置。

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

通过OAuth 2.0客户端授权邮递员

  1. 在“类型”下的“身份验证”标签中,选择OAuth 2.0
  2. 对于访问令牌,输入在步骤9中下载client_secret_ [YourClientID] .json文件中找到的访问令牌。
  3. 单击获取新访问令牌
  4. 确保您的设置如下:

点击此处查看设置

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

  1. 点击请求令牌
  2. 新的浏览器标签/窗口将打开
  3. 打开浏览器标签后,通过相应的Google帐户登录
  4. 接受同意画面
  5. 完成了

忽略浏览器消息“不安全”等。直到Google官员筛选了您的应用后,该消息才会显示。在这种情况下,由于Postman是应用程序,因此它将始终显示。


两年后如何没有表决。这是唯一仍然有效的解决方案
alexwhan'December'20

更新了帖子以反映您对其仍然有效的确认。
Zenahr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.