我正在尝试使用 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
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' 根据谷歌文档设置请求的方法、参数和正文
到目前为止,我发现的最佳方式是去 Oauth 游乐场:https://developers.google.com/oauthplayground/
选择相关的 google api 类别,然后在 UI 中选择该类别内的范围。点击“授权API”蓝色按钮获取授权码。通过单击蓝色按钮交换令牌的授权代码。存储 OAuth2 令牌并使用它,如下所示。
在 REST API 请求的 HTTP 标头中,添加:“Authorization: Bearer”。在这里,授权是关键,而“承载”。例如:“授权:承载 za29.KluqA3vRtZChWfJDabcdefghijklmnopqrstuvwxyz6nAZ0y6ElzDT3yH3MT5”
当前答案已过时。这是最新的流程:
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 是应用程序。
转到 https://console.developers.google.com/apis/credentials 创建 Web 应用程序凭据。
在 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"
}
]
}
}
}
我发现我没有为正确的应用程序类型生成凭据。如果您使用 Postman 测试 Google oAuth 2 API,请选择凭据 -> 添加凭据 -> OAuth2.0 客户端 ID -> Web 应用程序。
https://i.stack.imgur.com/J4gPM.png
这是一个老问题,但没有选择答案,我自己解决了这个问题。这是我的解决方案:
确保您一开始就可以使用您的 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”}]}
Google 已更改访问令牌 URL:https://accounts.google.com/o/oauth2/token
。现在需要:https://oauth2.googleapis.com/token
作为@DimaTx 最佳答案的补充,不要忘记勾选“使用浏览器授权”复选框,正如团队邮递员自己在 github.com/postmanlabs/postman-app-support/issues/7700 中解释的那样
这将防止/解决“此浏览器或应用程序可能不安全”的结果。
https://i.stack.imgur.com/OZUnl.png
不定期副业成功案例分享
https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.userschema