android - 如何使用 curl 命令获取 google oAuth2.0 访问令牌?
问题描述
我正在试验谷歌的 REST api。在这里,我试图从 cURL 命令生成访问令牌,以便在进一步的 REST 请求中使用它。但我面临以下错误。
我试图通过下面的 cURL 命令获取访问令牌,但我得到了错误响应。
curl \
--request POST \
--data "code=4/GQEg70zaxHAuRhhd6A1RB_6LIxwwBV8ak5xRP-nZIBTjuvt4g3fTWyU&client_id=954040553015-bphgid2596t65i91827omteq778cp7gj.apps.googleusercontent.com&client_secret=Sn3giYFFPMCNteKC--938xsP&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token
回复:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
然后我编辑了如下命令,但它失败了。
curl -d client_id=954040553015-bphgid2596t65i91827omteq778cp7gj.apps.googleusercontent.com -d client_secret=Sn3giYFFPMCNteKC--938xsP -d grant_type=authorization_code -d redirect_uri=urn:ietf:wg:oauth:2.0:oob -d code=4/GQEg70zaxHAuRhhd6A1RB_6LIxwwBV8ak5xRP-nZIBTjuvt4g3fTWyU https://oauth2.googleapis.com/token
回复:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
因此,基于此链接https://gist.github.com/LindaLawton/cff75182aac5fa42930a09f58b63a309#file-googleauthenticationcurl-sh我更改了 grant_type=client_credentials。但我又得到了错误响应。
{
"error": "unsupported_grant_type",
"error_description": "Invalid grant_type: client_credentials"
}
所以,请帮我解决错误。
解决方案
所以答案就在问题中。"Invalid grant_type: client_credentials"
而授权类型应该是authorization_code
我对您的建议是去 OAuth 游乐场,将它发送的内容与您发送的内容进行比较。这是操场上的粘贴...
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-length: 277
content-type: application/x-www-form-urlencoded
user-agent: google-oauth-playground
code=4%2FGgFtOcUM73dTMJNpE7XR7w082MrYH-LCm7zMylg31ESKrwmpyQXnzOM
&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground
&client_id=407408718192.apps.googleusercontent.com
&client_secret=************
&scope=
&grant_type=authorization_code
推荐阅读
- java - 为什么这个 Java 方法会泄漏——为什么内联它会修复泄漏?
- python - Discord bot - 旧昵称的旧帖子
- zebra-printers - 如何从主 zpl 程序调用另一个 zpl 文件
- grav - 通过 GRAV Admin 插件选择模板模块
- python - 按子json的元素聚合json
- c# - UWP 绑定。有什么不对劲
- vb.net - VB.net 在共享相似文件名的目录中合并 PDF
- bit-manipulation - 通过乘法和移位舍入整数除法
- ssl - Nginx 负载均衡器显示不完整的 HTTPS 页面
- java - movetoElement 冻结。有没有办法验证它是否冻结