3

我正在尝试使用 Google Oauth v2。我进入我的 api 控制台并设置以下 2 个重定向 uri...

http://localhost:3000/auth/authenticate
http://localhost:3000/auth/google/getToken

当我运行以下...

curl -d "code=<removed>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fgoogle%2fgetToken&client_id=<removed>&client_secret=<removed>&grant_type=authorization_code" -X POST https://accounts.google.com/o/oauth2/token

一切都很好,但是,

curl -d "code=<removed>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fauthenticate&client_id=<removed>&client_secret=<removed>&grant_type=authorization_code" -X POST https://accounts.google.com/o/oauth2/token

说不出来……

"error" : "redirect_uri_mismatch"

我只是改变了这个,有传播时间框架吗?如何让两个 uris 工作?

4

3 回答 3

8

如此处所述,您第二次发送 redirect_uri 时将其发送以进行验证(它们需要匹配),这不是任意值。在请求访问令牌时,您需要将相同的 redirect_uri 值传递给您要求在授权后重定向用户的 redirect_uri 的值。否则谷歌(或任何其他提供商将生成错误消息)。

于 2012-08-22T00:28:51.900 回答
2

以防万一您使用的是Google+ javascript button,您必须输入postmessage而不是实际的 URI。我几乎花了一整天的时间才弄清楚这一点,因为谷歌文档出于某种原因并没有明确地支持它。

于 2013-09-24T19:21:23.847 回答
1

一个应用可以有多个 redirect_uri 值。但是,在令牌请求中需要使用在初始授权请求(用户被重定向的地方)中使用的相同 redirect_uri。在单个授权上更改 uri 将因该错误而失败。

于 2012-08-21T23:56:57.323 回答