我在一个反应项目中设置了google oauth。它在当地的发展中发挥了良好的作用。有一次,我将oauth客户端提升为" production“,并修改了JS原点,并将URI重定向到生产值,但是它给出了这个错误。
错误400: redirect_uri_mismatch 你不能登录这个应用程序,因为它不符合谷歌的OAuth 2.0政策。 如果您是应用程序开发人员,请在Google控制台中注册重定向URI。请求详细信息: redirect_uri=http://super-server.herokuapp.com/v1/auth/google/callback相关开发人员文档
这些是google云控制台中的授权重定向URI:
正如您所看到的,HTTP模式没有授权的uri。他们甚至不被允许进入生产模式。所以我不确定这是从哪里来的,因为服务器是HTTPS
服务器:

有什么建议吗?
发布于 2022-09-03 17:26:51
重定向uri必须与要添加到控制台的完全匹配。
如果您检查您的应用程序正在运行的错误消息。
http://super-server.herokuapp.com/v1/auth/google/callback所有您添加的都是https。
请允许我建议修复您的应用程序,使其运行https。我认为您将无法添加http作为产品重定向uri端点。
文档


Node.js
我对react.js还不太了解,但是对于节点,您应该可以这样做
const http = require('http');
const https = require('https');发布于 2022-09-04 18:57:11
在我的例子中(MERN + passport.js),我的配置如下所示:
const googleOptions = {
clientID: config.google.id,
clientSecret: config.google.secret,
passReqToCallback: true,
callbackURL: '/v1/auth/google/callback',
scope: ['profile', 'email']
};尽管服务器、客户端& google控制台中的oauth客户机的配置都与https的所有设置一起生产,但出于某种原因,callbackURL一直以http://my-domain.com/v1/auth/google/callback的形式使用google
因此,这个修复可能很麻烦,但它确实解决了我的oauth问题:
//Google Strategy
const googleOptions = {
clientID: config.google.id,
clientSecret: config.google.secret,
passReqToCallback: true,
callbackURL: config.environment == 'production' ? 'https://super-server.herokuapp.com/v1/auth/google/callback' : '/v1/auth/google/callback',
scope: ['profile', 'email']
};发布于 2022-09-04 19:05:14
看起来客户端(React端)上的redirect_uri设置为http://super-server.herokuapp.com/v1/auth/google/callback
将客户端上的redirect_uri从(http) http://super-server.herokuapp.com/v1/auth/google/callback更改为(https) https://super-server.herokuapp.com/v1/auth/google/callback。
https://stackoverflow.com/questions/73593496
复制相似问题