我逐步遵循"使用OAuth 2.0进行Web服务器应用程序"帮助页面。 Using OAuth 2.0 for Web Server Applications
我使用http / rest请求。
一切正常,直到第5步:"交换授权代码以刷新和访问令牌"。
我的请求(POST或GET)返回404错误:" Not Found"。 这是我的要求,与指南相同:
https://www.googleapis.com/oauth2/v4/token?
code=4/_XXXXXXXXXXXXXXXXXXX__XXXXXXXXXXXXXX-XXXXXX?&client_id=012345678912-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com&client_secret=XXXXXXXXXXXXXXXXXXX_XXXX&grant_type=authorization_code&redirect_uri=http%3a%2f%2fwww.mydomain.com%3a50000%2fMyPage
以下是指南的相关部分:
"要交换访问令牌的授权码,请致电 https://www.googleapis.com/oauth2/v4/token端点并设置 以下参数:
字段
代码从初始请求返回的授权代码。
client_id从API控制台获取的客户端ID。
client_secret从API控制台获取的客户端密钥。
redirect_uri为您的项目列出的重定向URI之一 API控制台。
grant_type如OAuth 2.0规范中所定义,此字段必须 包含authorization_code的值。"
我认为服务网址存在问题。我错了吗?
任何人都可以提供工作网址吗?
答案 0 :(得分:3)
工作请求将是
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-length: 233
content-type: application/x-www-form-urlencoded
user-agent: google-oauth-playground
code=4%2FKxoYTS-jeq5-d6Lv7YvSz9ZrK0pJ_5lZsMExzNC1M0o&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=407408718192.apps.googleusercontent.com&client_secret=************&scope=&grant_type=authorization_code
请注意: -
code=
等是请求正文,而不是URL。答案 1 :(得分:2)
auth流程中的第二步是HTTP POST。
https://www.googleapis.com/oauth2/v4/token
code={The code from step one}&client_id={ClientId}&client_secret={ClientSecret}&redirect_uri={RedirectURI}&grant_type=authorization_code
我看到的主要区别是你在URL的末尾添加了?
,这是不需要的。请记住,您需要完全按照我的方式发布字符串,并将&&#;作为字符串。
这是我的Google 3 Legged OAuth2 Flow教程,它可能有所帮助