Google API Rest:用于刷新和访问令牌的Exchange授权代码-错误404

Rik*_*kou 4 oauth google-api google-oauth

在逐步执行“将OAuth 2.0用于Web服务器应用程序”帮助页面时,出现404错误。将OAuth 2.0用于Web服务器应用程序

我使用http / rest请求。

一切正常,直到步骤5:“为刷新和访问令牌交换授权代码”。

我的请求(POST或GET)返回404错误:“未找到”。这是我的要求,与指南中的相同:

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
Run Code Online (Sandbox Code Playgroud)

这是指南的相关部分:

“要交换访问令牌的授权代码,请调用 https://www.googleapis.com/oauth2/v4/token端点并设置以下参数:

领域

code从初始请求返回的授权码。

client_id从API控制台获取的客户端ID。

client_secret从API控制台获取的客户端密码。

redirect_uri在API控制台中为您的项目列出的重定向URI之一。

grant_type如OAuth 2.0规范中所定义,此字段必须包含authorization_code的值。”

我认为服务网址有问题。我错了吗?

任何人都可以提供工作网址吗?

pin*_*yid 5

工作要求是

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
Run Code Online (Sandbox Code Playgroud)

注意:-

  1. 这是一个POST,所以code=etc是请求正文,而不是URL。
  2. 因为是帖子,所以请确保content-type标头正确,即。“应用程序/ x-www-form-urlencoded”
  3. 如果访问代码包含非字母数字,例如。第二个字符中的“ /”,则需要进行网址编码。这通常是由您正在使用的http库完成的(例如jquery,Angular $ http等)。检查接线,看接线是否正确
  4. 我非常怀疑授权码中是否包含问号。如果(只有)这样做,则需要对其进行URL编码。