我最近安装了Ngrok,以便在手机上测试我的localhost流星应用程序。 我成功通过ngrok通过隧道访问流星应用程序。 但是,当我尝试登录时,我收到此错误消息:
登录过程显示以下错误消息:
400. That’s an error.
Error: redirect_uri_mismatch
Application: AppName
You can email the developer of this application at: my@emailadress.com
The redirect URI in the request, http://localhost:7123/_oauth/google,
does not match the ones authorized for the OAuth client.
更新授权的JavaScript来源&将URI重定向到Ngrok转发地址,没有效果。
如何正确使用ngrok与Google Oauth结合使用?
非常感谢任何帮助
答案 0 :(得分:1)
使用ngrok并将根URL更改为ngrok提供的URL。
ROOT_URL=http:XXXXXXXX.ngrok.io meteor
开始流星。
答案 1 :(得分:0)
它尝试使用@RequestMapping(value = "/v1/...", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@CrossOrigin
public ResponseEntity<?> createRequest(@RequestBody OrderDTO orderdto){
RestTemplate restTemplate = new RestTemplate();
.......
.....
return new ResponseEntity<>(HttpStatus.CREATED);
}
而不是更像ngrok的网址,例如:http://localhost:7123/_oauth/google
您可以检查用于运行应用程序的参数和环境变量。
例如,我通常使用
https://fd4fdbbb.ngrok.io/_oauth/google
使用看似如下的bash脚本运行meteor:
ServiceConfiguration.configurations.upsert(
{ service: 'facebook' },
{
$set: {
appId: process.env.facebookConsumerKey,
secret: process.env.facebookConsumerSecret,
loginStyle: 'popup'
}
}
);
因此,您可以使用#!/bin/bash
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm install 4.4.7
IP_ADDRESS=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | grep -v '10.0.0.1'` echo "Starting app on: $IP_ADDRESS:3000"
# NODE_DEBUG=request \
# facebookOAuthRedirectURL=http://$IP_ADDRESS:3000/_oauth/facebook \
facebookAppName="BlahApp - local dev" \
facebookConsumerKey=12345 \
facebookConsumerSecret=xxxxxx \
facebookOAuthRedirectURL=http://$IP_ADDRESS:3000/_oauth/facebook \
MONGO_URL=mongodb://$IP_ADDRESS:27017/staging-blah-app \
ROOT_URL=http://$IP_ADDRESS:3000 \
BIND_IP=$IP_ADDRESS \
MOBILE_DDP_URL=http://$IP_ADDRESS \
MOBILE_ROOT_URL=http://$IP_ADDRESS \
meteor --port $IP_ADDRESS:3000 --settings development-settings.json
googleOAuthRedirectURL=http://$IP_ADDRESS:3000/_oauth/google
答案 2 :(得分:0)
问题是meteor没有读取环境变量,即使它在客户端被覆盖,服务器也会以错误的回调URL连接到google。
现在为解决方案......我首先确保在杀死应用程序后通过在终端中运行此设置来重置Google服务配置中的设置:
import pymysql
在一个单独的终端中,我开始使用ngrok来生成隧道链接:
meteor reset
产生隧道链接:
./ngrok http 7123
在一个单独的终端中,我通过将其分配到“端口7123”并将“http://adba9b9f.ngrok.io”设置为absoluteUrl来启动我的应用程序:
http://adba9b9f.ngrok.io/
要确认已执行此命令,我将其输入浏览器控制台
ROOT_URL=http://adba9b9f.ngrok.io meteor --port 7123
回应:
Meteor.absoluteUrl()
表示Meteor.absoluteUrl()命令成功。
接下来,我通过“http://adba9b9f.ngrok.io”隧道访问我的应用,然后点击“配置Google按钮”,其中GLADLY注意到授权的JavaScript来源预设为: http://adba9b9f.ngrok.io和 授权重定向URI预设为:http://adba9b9f.ngrok.io/_oauth/google
然后,我使用Google凭据中的详细信息填写了客户端ID和客户端密钥部分,并使用配置Google按钮详细信息中的详细信息更新了Google凭据并保存。
很高兴地说......现在一切都很有效。