使用Postman访问OAuth 2.0 Google API

问题描述 投票:39回答:5

我想用Proximity Google API访问Postman chrome app。我已经关注邮递员和谷歌开发网站的教程,但我仍然收到401错误消息。

我在做什么?

  • 第1步 - 启用Proximity API:

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

  • 第2步 - 获取凭据:

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

从Google Dev控制台,可以下载具有客户端ID,auth URI和令牌URI的JSON文件enter image description here

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

  • 第3步 - 使用Postman测试API

enter image description here

我得到了什么? enter image description here

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

enter image description here

oauth-2.0 google-api google-api-client postman google-oauth2
5个回答
38
投票

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

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

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


37
投票

邮递员将查询模仿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:在步骤2中生成的Client ID(例如,'123456789012-abracadabra1234546789blablabla12.apps.googleusercontent.com') 客户端密码:在步骤2中生成的Client secret(例如,'ABRACADABRAus1ZMGHvq9R-L') 范围:请参阅Google文档了解所需的OAuth范围(例如,https://www.googleapis.com/auth/cloud-platform) 州:空 客户端身份验证:“作为基本身份验证标头发送” 点击“请求令牌”和“使用令牌”
  4. 根据Google文档设置请求的方法,参数和正文

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

Postman API Access

  1. 在Postman中将这些设置与oauth2一起使用: Auth URL = https://accounts.google.com/o/oauth2/auth 访问令牌URL = https://accounts.google.com/o/oauth2/token 为HTTP API选择Scope 生成令牌 添加架构使用:

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. 修补用户使用情况:

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

PATCH https://www.googleapis.com/admin/directory/v1/users/[email protected]

 {
  "customSchemas": {
     "SAML": {
       "role": [
         {
          "value": "arn:aws:iam::123456789123:role/Admin,arn:aws:iam::123456789123:saml-provider/GoogleApps",
          "customType": "Admin"
         }
       ]
     }
   }
}

7
投票

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

enter image description here


4
投票

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

  1. 确保您首先设置为使用Google API。看看谷歌的list of prerequisites。我正在使用Google My Business,所以我也经历了它的Get Started流程。
  2. OAuth 2.0 playground中,步骤1要求您选择要进行身份验证的API。根据您的情况选择或输入(在我的Google My Business案例中,我必须将https://www.googleapis.com/auth/plus.business.manage输入到“输入您自己的范围”输入字段中)。注意:这与Get Started指南的“制作简单的HTTP请求”部分的步骤6中描述的内容相同。
  3. 假设验证成功,您应该在OAuth游乐场的“步骤1的结果”步骤中返回“访问令牌”。将此令牌复制到剪贴板。
  4. 打开Postman并根据需要打开您想要的任何集合。
  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" } ] }
© www.soinside.com 2019 - 2024. All rights reserved.