Google cloud platform 邮递员:无法完成OAuth2.0登录

Google cloud platform 邮递员:无法完成OAuth2.0登录,google-cloud-platform,google-api,postman,gcloud,google-oauth,Google Cloud Platform,Google Api,Postman,Gcloud,Google Oauth,我想请求一个令牌,以便让我的邮递员登录我的Gmail帐户,然后我可以调用Google Cloud API 我试着键入我的Gmail电子邮件地址和密码,你可以从这张图片中看到 最终目标是获得这样的API https://monitoring.googleapis.com/v1/projects/firetestjimis/dashboards 我可以使用gcloud的Gmail帐户登录(“gcloud auth application default login”),然后使用gcloud au

我想请求一个令牌,以便让我的邮递员登录我的Gmail帐户,然后我可以调用Google Cloud API

我试着键入我的Gmail电子邮件地址和密码,你可以从这张图片中看到

最终目标是获得这样的API

https://monitoring.googleapis.com/v1/projects/firetestjimis/dashboards
我可以使用gcloud的Gmail帐户登录(“gcloud auth application default login”),然后使用gcloud auth application default print access token打印令牌,复制打印的令牌并粘贴到access token(Postman)中。好吧,它可以工作,但它是一种强迫我启动gcloud并安装它。我非常确信,我可以通过使用我登录gcloud的同一用户进行登录来达到相同的想法。我只是不知道如何和邮递员一起做。我在过去几个小时里读到的所有内容都让我想到了我贴在上面的图片,但由于这个问题的错误,它失败了

如果相关,这里是gcloud控制台,我可以从中获取令牌

C:\Program Files (x86)\Google\Cloud SDK>gcloud auth application-default print-access-token
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\..\lib\third_party\google\auth\_default.py:69: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a "quota exceeded" or "API not enabled" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/
  warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)
ya29.a0Ae4lvC3-3WxUmx... removed token ... hs251yTql3eEE

C:\Program Files (x86)\Google\Cloud SDK>
***在第一次发布后编辑一点

另一个原因是

Erro 400: invalid_request
Invalid parameter value for redirect_uri: Missing scheme: /
当我试着

我从中复制的客户端Id

***根据疯子的建议编辑

我仔细地遵循了所有建议的步骤,事实上,我可以通过点击GetNewAccessToken直接从Postman获得一个Google令牌。不管怎样

{
  "error": {
    "code": 403,
    "message": "Request had insufficient authentication scopes.",
    "status": "PERMISSION_DENIED"
  }
}
对于这两个来自Postman的提示(粘贴的curl脚本,因为它比Postman打印屏幕更容易从其他人处进行评估)

下面是在中创建的OAuth客户端ID

这里是

***编辑

***编辑

  • 编辑

***成功添加两个作用域后编辑

它说“因为你添加了一个敏感范围,你的同意屏幕在发布之前需要谷歌的验证”

当我点击“提交以供验证”时,我看到它抱怨应用程序主页和应用程序隐私链接


使用此方法无法实现登录Google帐户的目标。客户端ID和客户端密码不是您的用户名和密码。它们是身份验证客户端的凭据

如果要使用Google用户凭据,则需要实现受支持的Google OAuth流。有几种方法,但都涉及一个web浏览器来处理用户名和密码输入

为了生成OAuth令牌(访问/标识/刷新),还需要指定访问范围。这可能涉及/需要对应用程序进行安全审核。因此,我建议您使用Google支持的库,除非您希望了解OAuth流的实现细节


实际上,可以使用Postman访问OAuth 2.0安全的Google API

首先,您需要在Google云控制台项目中创建一个OAuth客户端。它应该是一个“Web应用程序”客户端,重定向URI应该是
https://oauth.pstmn.io/v1/callback

记下客户ID和客户机密:

现在,去找邮递员。创建新请求。在“授权”选项卡上,选择OAuth 2.0,然后单击“获取新访问令牌”:

填写表格

  • 回调URL:
    https://oauth.pstmn.io/v1/callback
    (将由
    使用浏览器授权自动设置)
  • 使用浏览器授权:true
  • 验证URL:
    https://accounts.google.com/o/oauth2/auth
  • 访问令牌URL:
    https://accounts.google.com/o/oauth2/token
  • 客户端ID:${您的客户端ID}
  • 客户机密:${your cluent Secret}
  • 范围:${your scopes},例如
    https://www.googleapis.com/auth/gmail.readonly
    用于Gmail只读访问。确保在您的项目中允许相应的作用域和API(例如,在同意屏幕配置页面上)

单击“请求令牌”。浏览器将打开Google的OAuth同意屏幕
pstmn.io
app。如有必要,请登录并授予访问权限。在流程结束时,将打开一个弹出窗口(确保它未被浏览器阻止),将您重定向回Postman应用程序

去用你的代币


关于“客户端ID和客户端密码不是您的用户名和密码。它们是您的身份验证客户端的凭据”的评论,请100%清楚。我还希望邮递员能弹出一个浏览器,这样我就可以登录gmail了。gcloud也是如此。顺便说一句,你确定我不能简单地用邮递员来索取代币吗?我现在怎么样?我的答案是回答你的问题。关于链接,如果您使用正确的凭据,您将收到一个URL以进入浏览器。尝试通过提供的链接中的步骤,如果没有浏览器处理身份验证或遵循谷歌规则的浏览器插件,它今天将无法工作。谷歌不希望机器人能够强行登录。谷歌现在要求在认证过程中进行人机交互。今天,您将实现的最好效果是使用链接方法对您的帐户进行安全锁定。感谢您的所有贡献。这似乎确实是可能的:“我想请求一个令牌,以便让我的邮递员登录我的Gmail帐户,然后我可以调用谷歌云API”。看来我只是按照错误的步骤做了。你的请求似乎使用了你没有要求的作用域。@JimC,看看更新的答案。我添加了一个屏幕截图。范围实际上是依赖于项目的,您应该选择您需要的范围。当然。这意味着您应该添加所需的作用域。在我的示例中,我使用Gmail作用域,因为我演示了如何使用Gmail API。@JimC。请参阅另一个屏幕截图。只需按“添加范围”按钮并使用“监视”搜索。如果您不确定需要什么,甚至可以添加所有监视范围
curl --location --request GET 'https://monitoring.googleapis.com/v1/projects/firetestjimis/dashboards' --header 'Authorization: Bearer ya29. *** token *** kO3Fg'

curl --location --request POST 'https://firestore.googleapis.com/v1/projects/firetestjimis/databases/(default)/documents:runQuery' --header 'Authorization: Bearer ya29. *** token *** kO3Fg' --header 'Content-Type: application/json' --data-raw '{
"structuredQuery": {
    "where" : {
        "fieldFilter" : { 
        "field": {"fieldPath": "id"}, 
        "op":"EQUAL", 
        "value": {"stringValue": "1"}
        }
    },
    "from": [{"collectionId": "transfer"}]
    }
}'
{"web":{"client_id":"7953 *** 5k6e9ivtdg.apps.googleusercontent.com","project_id":"firetestjimis","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"IJGCe *** Du6bU","redirect_uris":["https://oauth.pstmn.io/v1/callback"]}}