2016-10-04 35 views
7

我最近安裝了Ngrok爲了在我的手機上測試我的localhost流星應用程序。 我成功通過ngrok通過隧道訪問流星應用程序。 然而,當我嘗試使用我收到此錯誤信息登錄:如何將ngrok與Google Oauth結合使用?

登錄過程顯示了以下錯誤消息:

400. That’s an error. 

Error: redirect_uri_mismatch 

Application: AppName 

You can email the developer of this application at: [email protected] 

The redirect URI in the request, http://localhost:7123/_oauth/google, 
does not match the ones authorized for the OAuth client. 

更新授權的JavaScript源&重定向的URI到Ngrok轉發地址,沒有按」沒有效果。

如何正確使用與Google Oauth相結合的ngrok?

任何幫助,將不勝感激

+0

您是否嘗試使用http/https?你確定重定向URI是完整的嗎?*即*'http:// localhost:7123/_oauth/google'(最終沒有正斜槓)? –

+0

@ Max G.是的,我嘗試了兩種。讓我知道他們是否適合你... – SirBT

+0

這是我在我的重定向上設置的,它適用於我。出於好奇,爲什麼你將端口設置爲7123而不是默認的3000?使用ngrok時,你是否讓sur來放xxx.ngrok.io:7123? –

回答

0

它試圖用http://localhost:7123/_oauth/google,而不是更ngrok般的網址可能是,例如:https://fd4fdbbb.ngrok.io/_oauth/google

您可以檢查您正在使用運行參數應用程序和環境變量。

例如,我通常使用

ServiceConfiguration.configurations.upsert(
    { service: 'facebook' }, 
    { 
     $set: { 
      appId: process.env.facebookConsumerKey, 
      secret: process.env.facebookConsumerSecret, 
      loginStyle: 'popup' 
     } 
    } 
); 

,並使用bash腳本看起來運行流星一樣:

#!/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可以使用https://fd4fdbbb.ngrok.io/_oauth/google

+0

謝謝!實際上在我的流星客戶端啓動我運行:'Meteor.startup(函數(){ \t //客戶端啓動方法 \t Meteor.absoluteUrl.defaultOptions.rootUrl = 'http://xxxxxxxx.ngrok.io'; \t。 '';隨後當我接着「配置Google」時,系統會提示我將授權的Javascript起源設置爲:http:// xxxxxxxx.ngrok.io,並將授權重定向URI設置爲:http://xxxxxxxx.ngrok。 IO/_oauth/google'。 – SirBT

+0

你可以邀請我聊天嗎? – SirBT

+0

@SirBT當然,你會發現我在https://www.codementor.io/sebastianconcept –

1

使用ngrok並將根URL更改爲ngrok提供的URL。

ROOT_URL=http:XXXXXXXX.ngrok.io meteor開始流星。

+0

謝謝Ankit!遵循你的建議,我使用了ngrok生成的鏈接來更新我的Google憑證,我使用相同的鏈接在終端上成功啓動meteor,如下所示:'ROOT_URL =「http://xxxxxxxx.ngrok。io「流星」我說成功,因爲我看到'應用程序運行在:http:// xxxxxxxx.ngrok.io' – SirBT

+0

我的根url值應該沒有引號。 – Ankit

+0

感謝Ankit!根據你的建議,我用ngrok 生成的鏈接來更新我的Google憑證,我用同樣的鏈接成功地在終端啓動流星 這個:'ROOT_URL =「http:// xxxxxxxx .ngrok.io「meteor」 我說成功是因爲我看到'App運行在:http:// xxxxxxxx.ngrok.io'在 終端。但是當我瀏覽到鏈接http:// xxxxxxxx.ngrok.io' 我看到http://xxxxxxxxx.ngrok.io的連接已成功通過隧道 到您的ngrok客戶端,但客戶端未能建立 連接到本地地址localhost:7123.'我修復此... – SirBT

0

問題在於環境變量沒有被流星讀取,即使它在客戶端被覆蓋,不知何故服務器連接到谷歌與一個錯誤的回調url。

現在爲解決方案...我開始通過確保在谷歌服務配置的設置是由在終端運行此查殺程序後重設:

meteor reset 

在一個單獨的終端,然後我開始ngrok生成隧道鏈接:

通過指定爲「端口7123」

http://adba9b9f.ngrok.io/ 

在一個單獨的終端,我開始我的應用程序和設置「http://adba9b9f.ngrok.io」作爲ABSO:

./ngrok http 7123 

屈服隧道鏈接luteUrl這樣的:

ROOT_URL=http://adba9b9f.ngrok.io meteor --port 7123 

要確認此命令已被執行,我輸入到瀏覽器控制檯

Meteor.absoluteUrl() 

的迴應是:

"http://adba9b9f.ngrok.io" 

指示流星。 absoluteUrl()命令成功。

接下來,我通過「http://adba9b9f.ngrok.io」隧道訪問我的應用程序並點擊「配置谷歌按鈕」,在這裏很高興地注意到,授權JavaScript源被預設爲: http://adba9b9f.ngrok.io和 授權重定向的URI預設爲:http://adba9b9f.ngrok.io/_oauth/google

然後,我填寫了客戶端ID和客戶端祕密部分,其中包含來自Google憑據的詳細信息,並使用來自配置Google按鈕詳細信息的詳細信息更新了Google憑證並保存了該憑證。

很高興地說......現在一切都很有效。

相關問題