use*_*621 362 authentication oauth-2.0 google-signin
在网站https://code.google.com/apis/console上我已经注册了我的应用程序,为我的应用设置了生成的客户端ID:和客户端密钥,并尝试使用Google登录.不幸的是,我收到了错误消息:
Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI
scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id
Run Code Online (Sandbox Code Playgroud)
这条消息是什么意思,我该如何解决?我使用gem omniauth-google-oauth2.
Ste*_*zyl 363
重定向URI(返回响应的位置)必须在API控制台中注册,错误表明您没有这样做,或者没有正确完成.
转到项目的控制台,查看API Access.您应该看到您的client ID&client secret那里,以及重定向URI列表.如果未列出所需的URI,请单击编辑设置并将URI添加到列表中.
编辑:(从下面评价很高的评论)请注意,更新谷歌api控制台和存在的更改可能需要一些时间.一般只有几分钟但有时似乎更长.
Muk*_*ain 102
就我而言,它是www和non-wwwURL.实际站点具有wwwURL,Google Developer Console中的授权重定向URI具有non-wwwURL.因此,重定向URI存在不匹配.我通过Authorized Redirect URIs在Google Developer Console中更新为wwwURL 解决了这个问题.
其他常见的URI不匹配是:
http://在授权的重定向URI和https://作为实际的URL,或者反之亦然http://example.com/在授权重定向的URI),而不是使用斜线(http://example.com)作为实际的URL,或反之亦然以下是Google Developer Console的逐步截图,以便对那些难以找到开发人员控制台页面以更新重定向URI的人有所帮助.
- 单击菜单图标
- 点击
API Manager菜单
- 点击
Credentials菜单.在下OAuth 2.0 Client IDs,你会找到你的客户名称.就我而言,它是Web Client 1.单击它,将出现一个弹出窗口,您可以在其中编辑授权的Javascript Origin和授权的重定向URI.
以下是有关创建项目和客户端ID的Google文章.
Mik*_*nov 86
如果您使用的是Google+ javascript按钮,那么您必须使用postmessage而不是实际的URI.由于Google的文档由于某种原因没有明确说明,我花了差不多整整一天的时间来解决这个问题.
Roh*_*aki 56
1.你会看到这样的错误
之后,您必须复制该网址并将其添加到https://console.cloud.google.com/
现在Authorized Javascript Origins添加Authorized redirect URLS
显示错误的网址,称为redirect_uri_mismatchie,这里是
http://algorithammer.herokuapp.com,所以我在
Authorized Javascript Origins和 的两个地方都添加了它Authorized redirect URLS
点击保存并等待5分钟,然后尝试再次登录
Guv*_*urt 40
对于我的网络应用程序,我通过写作纠正了我的错
instead of : http://localhost:11472/authorize/
type : http://localhost/authorize/
Run Code Online (Sandbox Code Playgroud)
Jef*_*ard 40
在您在客户端检索授权代码的任何流程中,例如GoogleAuth.grantOfflineAccess()API,现在您想要将代码传递到服务器,兑换它,并存储访问权限和刷新令牌,那么您必须使用文字字符串postmessage而不是redirect_uri.
例如,在Ruby doc中的代码片段上构建:
client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
auth_client.update!(
:scope => 'profile https://www.googleapis.com/auth/drive.metadata.readonly',
:redirect_uri => 'postmessage' # <---- HERE
)
# Inject user's auth_code here:
auth_client.code = "4/lRCuOXzLMIzqrG4XU9RmWw8k1n3jvUgsI790Hk1s3FI"
tokens = auth_client.fetch_access_token!
# { "access_token"=>..., "expires_in"=>3587, "id_token"=>..., "refresh_token"=>..., "token_type"=>"Bearer"}
Run Code Online (Sandbox Code Playgroud)
唯一提到的Google文档postmessage就是这个旧的Google+登录文档.离线访问的doc页面没有提到这一点是绝对不可原谅的.#FacePalm
Chi*_*tan 29
确保检查协议"http://"或"https://"作为谷歌检查协议.最好在列表中添加两个URL.
对我来说,这是因为在“授权重定向 URI”列表中,我错误地放置了https://developers.google.com/oauthplayground/代替https://developers.google.com/oauthplayground(/末尾没有)。
这个答案与迈克的答案和杰夫的答案相同,都设置redirect_uri为postmessage客户端。我想添加更多有关服务器端的信息,以及适用于此配置的特殊情况。
create-react-app版本2.1.5摘要:React --> 请求社交身份验证“代码” --> 请求 jwt 令牌以获取您自己的后端服务器/数据库的“登录”状态。
responseType="code"获取授权码。(这不是令牌,不是访问令牌!)
react-google-login上面提到的。{ "provider": "google-oauth2", "code": "your retrieved code here", "redirect_uri": "postmessage" }REST_SOCIAL_OAUTH_ABSOLUTE_REDIRECT_URI,REST_SOCIAL_DOMAIN_FROM_ORIGIN和REST_SOCIAL_OAUTH_REDIRECT_URI在 Django 中settings.py都是不必要的。(它们是 Django REST Social Auth 使用的常量)简而言之,您不必在 Django 中设置与重定向 url 相关的任何内容。React前端"redirect_uri": "postmessage"就足够了。这是有道理的,因为您必须在前端执行的社交身份验证工作都是 Ajax 风格的 POST 请求,而不提交任何表单,因此实际上默认情况下不会发生重定向。这就是为什么如果您使用代码 + JWT 流程,则重定向 url 变得毫无用处,并且服务器端重定向 url 设置不会生效。youremailprefix717e248c5b924d60但是,如果您的电子邮件是 ,则用户名将类似于youremailprefix@example.com。它附加一些随机字符串来创建唯一的用户名。这是默认行为,我相信您可以自定义它并随意深入研究他们的文档。Authorization标头中并向后端发送请求,Django 后端现在会将其识别为登录,即经过身份验证用户。当然,如果您的令牌过期,您必须通过发出另一个请求来刷新它。天哪,我花了6个多小时终于搞定了!我相信这是我第一次看到这个postmessage东西。任何从事Django + DRF + JWT + Social Auth + React组合工作的人肯定会遇到这种情况。我不敢相信除了这里的答案之外,没有一篇文章提到过这一点。但如果您使用 Django + React 堆栈,我真的希望这篇文章可以为您节省大量时间。
小智 8
它已经得到了彻底的回答,但最近(比如一个月前)Google 停止接受我的 URI,它不起作用。我知道它之前确实这样做过,因为有一个用户注册了它。
无论如何,问题是常规的 400:redirect_uri_mismatch,但唯一的区别是它从 https:// 更改为 http://,并且 Google 不会允许您注册 http:// 重定向 URI,因为它们是生产发布状态(与本地主机相对)。
问题出在我的回调中(我使用 Passport 进行身份验证),我只做了
callbackURL: "/register/google/redirect"
Run Code Online (Sandbox Code Playgroud)
阅读文档,他们使用了完整的 URL,所以我将其更改为
callbackURL: "https://" + process.env.MY_URL+ "/register/google/redirect"
Run Code Online (Sandbox Code Playgroud)
将 https localhost 添加到我接受的 URI 中,以便我可以在本地进行测试,然后它再次开始工作。
TL;DR 使用完整的 URL,以便您知道要重定向到哪里
这似乎很奇怪而且很烦人,没有"一个"解决方案.对我来说http:// localhost:8000没有成功,但http:// localhost:8000 /已经解决了.
当您在https://code.google.com/apis/console上注册应用并创建客户端ID时,您有机会指定一个或多个重定向URI.redirect_uri您的身份验证URI上的参数值必须与其中一个完全匹配.
小智 6
重定向 URL 区分大小写。
就我而言,我添加了两者: http://localhost:5023/AuthCallback/IndexAsync http://localhost:5023/authcallback/indexasync
只需确保您输入的是 URL 而不仅仅是域名。因此,而不是: domain.com ,它应该是 domain.com/somePathWhereYouHadleYourRedirect
2015年7月15日 - 登录时使用此脚本上周正在运行的登录信息
<script src="https://apis.google.com/js/platform.js" async defer></script>
Run Code Online (Sandbox Code Playgroud)
停止工作并开始导致错误400 Error: redirect_uri_mismatch
在DETAILS部分: redirect_uri=storagerelay://...
我改为:
<script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>
Run Code Online (Sandbox Code Playgroud)
清单:
http还是https?&还是&?/)还是打开?(CMD/CTRL)+F,在凭证页面中搜索完全匹配.如果没有找到,则搜索丢失的那个.就我而言,我的凭证申请类型是“其他”。所以我Authorized redirect URIs在凭据页面中找不到。它似乎出现在应用程序类型:“Web 应用程序”中。但是您可以单击Download JSON按钮来获取client_secret.json文件。

打开json文件,可以找到这样的参数:"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]. 我选择使用http://localhost并且它对我来说很好用。
如果您使用本教程:https : //developers.google.com/identity/sign-in/web/server-side-flow那么您应该使用“postmessage”。
在 GO 这解决了这个问题:
confg = &oauth2.Config{
RedirectURL: "postmessage",
ClientID: ...,
ClientSecret: ...,
Scopes: ...,
Endpoint: google.Endpoint,
}
Run Code Online (Sandbox Code Playgroud)
我也收到此错误 Error-400:redirect_uri_mismatch
\n这不是server或Client side错误,但您只需检查是否没有像这样在末尾添加/(正斜杠)即可进行更改
\n重定向 URL 列表 \xe2\x9d\x8c:
\nhttps://developers.google.com/oauthplayground/\nRun Code Online (Sandbox Code Playgroud)\n仅执行此操作 \xe2\x9c\x85:
\nhttps://developers.google.com/oauthplayground\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
476611 次 |
| 最近记录: |