google-api - SPA 应用程序访问令牌的交换授权码
问题描述
我有一个带有 Rails BE 的 SPA React 应用程序。我正在使用https://github.com/anthonyjgrove/react-google-login离线生成code
with accessType 。这成功生成了一个代码,我可以取回它。
现在我正在尝试使用此代码使用 POSTMAN向https://oauth2.googleapis.com/token发出 POST 请求
curl --location --request POST 'https://oauth2.googleapis.com/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'code=4/0AX4XfWhUc8IC12kr1115g71111' \
--data-urlencode 'redirect_uri=urn:ief:wg:oauth:2.0:oob' \
--data-urlencode 'client_id=x.apps.googleusercontent.com' \
--data-urlencode 'client_secret=secret' \
--data-urlencode 'scope=' \
--data-urlencode 'grant_type=authorization_code'
就使用https://developers.google.com/oauthplayground而言,这看起来是正确的。它在这里工作。
但是,当我尝试通过 curl 或 HttParty 发出请求时,它会失败。我不确定这是否正在发生,因为我从 SPA 应用程序获取代码,然后使用我的 BE 应用程序发出其他请求。
[编辑] 我应该提到我尝试了多个不同的redirect_uri。本地主机:3000、3003。
解决方案
解决方案是从 SPA 应用程序进行令牌 API 调用。我能够成功提出请求。
我需要重新考虑如何组织和拨打电话。
推荐阅读
- ruby - Ruby:调用多个端点/嵌套 POST api 调用
- elasticsearch - 如何调整 ECK 集群的大小
- blazor - 在 Blazor 服务器端下载 xml 文件
- amazon-web-services - AWS - 启用延迟维护的 RedShift CloudFormation
- sql - PL/SQL 过程中带参数的偏移量
- ruby-on-rails - 使用 ruby 扩展,rubocop 和 Visual Studio Code
- ajax - 如何在数据表ajax中使用json返回的对象内部的数组列名?
- c++ - 我可以对 C++ 中的类和结构使用 static 关键字吗?
- firebase - Firebase Firestore 读取计数?
- sql - 如何在 SQL 中计算日期之间的天数/小时数