ChatGPT解决这个技术问题 Extra ChatGPT

使用 Postman 访问 OAuth 2.0 Google API

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

我在做什么?

第 1 步 - 启用 Proximity API:

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

第 2 步 - 获取凭据:

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

https://i.stack.imgur.com/JG38z.png

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

第 3 步 - 使用 Postman 测试 API

https://i.stack.imgur.com/cZbst.png

https://i.stack.imgur.com/EPSZR.png

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

https://i.stack.imgur.com/VCp0y.png


K
Kyle Calica-St

Postman 将查询模拟 Web 应用程序的 Google API

生成 OAuth 2.0 令牌:

确保启用了 Google API 创建 OAuth 2.0 客户端 ID 转到 Google 控制台 -> API -> OAuth 同意屏幕 将 getpostman.com 添加到授权域。单击保存。转到 Google 控制台 -> API -> 凭据 单击“创建凭据”-> OAuth 客户端 ID -> Web 应用程序名称:“getpostman” 授权重定向 URI:https://www.getpostman.com/oauth2/callback 复制生成的客户端供以后使用的 ID 和客户端密码字段在 Postman 中选择 Authorization 选项卡并选择“OAuth 2.0”类型。点击“获取新访问令牌”填写获取新访问令牌表单,如下令牌名称:“Google OAuth getpostman”授权类型:“授权码”回调 URL:https://www.getpostman.com/oauth2/callback 验证 URL: https://accounts.google.com/o/oauth2/auth 访问令牌 URL:https://accounts.google.com/o/oauth2/token 客户端 ID:在第 2 步中生成的客户端 ID(例如,'123456789012- abracadabra1234546789blablabla12.apps.googleusercontent.com')客户端密码:在步骤 2 中生成的客户端密码(例如,'ABRACADABRAus1ZMGHvq9R-L') 范围:请参阅 Google 文档以了解所需的 OAuth 范围(例如,https://www.googleapis. com/auth/cloud-platform) State: Empty Client Authentication: "Send as Basic Auth header" Click 'Request Token' and 'Use Token' 根据谷歌文档设置请求的方法、参数和正文


比谷歌员工解释得更透彻:)
无可挑剔的答案。非常感谢 !
我得到“此浏览器或应用程序可能不安全”结果
此流程不再起作用: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
V
Vijay Madhavapeddi

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

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

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


这个工作流程解决了我的问题!只是为了补充解释,在“交换令牌授权码”之后,我复制了“访问令牌”字段中的值并将其用作邮递员的授权承载
Z
Zenahr

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

SauerTrout 确认,此处概述的方法仍然有效(2022 年 3 月 5 日)

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

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

创建 OAuth 2.0 客户端

访问 https://console.cloud.google.com/apis/credentials 单击 CREATE CREDENTIALS 选择 OAuth 客户端 ID 对于应用程序类型选择 Web 应用程序添加名称为授权重定向 URI 添加以下 URI

https://oauth.pstmn.io/v1/callback

单击 Save 单击您刚刚生成的 OAuth 客户端 在顶部栏中单击 DOWNLOAD JSON 并将文件保存在您机器上的某个位置。

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

通过 OAuth 2.0 客户端授权 Postman

在 TYPE 下的 Auth 选项卡中,选择 OAuth 2.0 对于 Configuration Options 下的值,输入我们在步骤 9 中下载的 client_secret_[YourClientID].json 文件中找到的值 单击 Get New Access Token 确保您的设置如下:

Click here to see the settings

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

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

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


两年后这怎么没有票。这是唯一仍然有效的解决方案
更新了帖子以反映您确认它仍然有效。
我确认它现在也可以工作。
2022 年 3 月 5 日完美运行!编辑我只会添加添加评论和其他更高权限的任务,youtube.force-ssl 是一个合适的范围。
您添加到 google 控制台的回调 URL 应该是 oauth.pstmn.io/v1/browser-callback
D
Daniel Williams

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

Postman API Access

在 Postman 中将这些设置与 oauth2 一起使用: Auth URL = https://accounts.google.com/o/oauth2/auth 访问令牌 URL = https://accounts.google.com/o/oauth2/token 为 HTTP 选择范围API Generate Token 添加 Schema 使用:

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

修补用户使用:

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

D
Daniel Williams

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

https://i.stack.imgur.com/J4gPM.png


i
irmalcol

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

确保您一开始就可以使用您的 Google API。请参阅 Google 的先决条件列表。我正在使用“Google 我的商家”,所以我也完成了它的“入门”流程。在 OAuth 2.0 Playground 中,第 1 步要求您选择要验证的 API。选择或输入适用于您的案例(在我的 Google 我的商家案例中,我必须在“输入您自己的范围”输入字段中输入 https://www.googleapis.com/auth/plus.business.manage)。注意:这与入门指南的“发出简单的 HTTP 请求”部分的第 6 步中的描述相同。假设身份验证成功,您应该在 OAuth 游乐场的“步骤 1 的结果”步骤中获得一个“访问令牌”。将此令牌复制到剪贴板。打开 Postman 并根据需要打开所需的任何集合。在 Postman 中,确保选择“GET”作为请求类型,然后单击请求类型下拉列表下方的“授权”选项卡。在 Authorization "TYPE" 下拉菜单中,选择 "Bearer Token" 将您之前从 OAuth playground 复制的“Access Token”粘贴到 Postman 中显示的“Token”字段中。差不多好了!要测试一切是否正常,请将 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 ”,“状态”:{“状态”:“未验证”},“权限级别”:“OWNER_LEVEL”}]}


C
Cormac Hollingsworth

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


F
Fadils

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

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

https://i.stack.imgur.com/OZUnl.png