2016-10-04 8 views
7

Недавно я установил Ngrok, чтобы протестировать приложение localhost meteor на своем телефоне. Мне удастся получить доступ к приложению метеоров через туннель от 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 адреса пересылки, Безразлично» t имеют эффект.

Как правильно использовать ngrok в сочетании с Google Oauth?

Любая помощь будет принята с благодарностью

+0

Пробовал ли вы с помощью http/https? Вы убедились, что перенаправление uri является полным, * i.e. * 'Http: // localhost: 7123/_oauth/google' (в конце концов, нет косой черты)? –

+0

@ Макс Г. Да, я попробовал оба. Дайте мне знать, если они сработают для вас ... – SirBT

+0

Вот что я установил в своем перенаправлении, и это работает для меня. Из любопытства, почему вы установили свой порт в 7123, а не по умолчанию 3000? При использовании ngrok, вы сделали sur, чтобы положить xxx.ngrok.io:7123? –

ответ

0

Он пытается использовать http://localhost:7123/_oauth/google вместо более ngrok типа URL, которые могут быть, например: https://fd4fdbbb.ngrok.io/_oauth/google

Вы можете проверить параметры, которые вы используете для запуска приложение и переменные среды тоже.

Например, я обычно использую

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 можно использовать https://fd4fdbbb.ngrok.io/_oauth/google

+0

Спасибо! На самом деле в моем Метеор запуске клиента я бегу: 'Meteor.startup (функция() { \t // Запуск клиента метод \t Meteor.absoluteUrl.defaultOptions.rootUrl = 'http://xxxxxxxx.ngrok.io'; \t. }); «Впоследствии, когда я затем« Настроить Google », мне предлагается установить разрешенные Javascript Origins на:' http: // xxxxxxxx.ngrok.io' и задать разрешенный URI для перенаправления: http: //xxxxxxxx.ngrok. -й/_oauth/google'. – SirBT

+0

Можете ли вы пригласить меня на собеседование? – SirBT

+0

@SirBT уверен, вы найдете меня на https://www.codementor.io/sebastianconcept –

1

Используйте ngrok и измените URL-адрес корня на тот, который указан ngrok.

ROOT_URL=http:XXXXXXXX.ngrok.io meteor для начала метеор.

+0

Спасибо Ankit! Следуя вашим советам, я использовал ссылку, сгенерированную ngrok для обновления моих учетных данных Google, я использую ту же ссылку для успешного запуска метеора в терминале следующим образом: «ROOT_URL =» http: //xxxxxxxx.ngrok.io «meteor» Я говорю успешно, потому что вижу «приложение работает на: http: // xxxxxxxx.ngrok.io' – SirBT

+0

Я верю, что значение корневого URL должно быть без кавычек. Кстати, это сработало. Я сделал то же самое вчера, и это сработало – Ankit

+0

Спасибо Ankit! Следуя вашему совету, я использовал ссылку, сгенерированную ngrok , чтобы обновить мои учетные данные Google. Я использую ту же ссылку для успешного завершения. начните метеор в терминале, набрав : «ROOT_URL =» http: // xxxxxxxx .ngrok.io "meteor" Я говорю успешно, потому что вижу, что приложение работает по адресу http: // xxxxxxxx.ngrok.io' в терминале. Однако, когда я просматриваю ссылку http: // xxxxxxxx.ngrok.io' Я вижу 'Соединение с http://xxxxxxxxx.ngrok.io было успешно туннелировано вашему клиенту ngrok, но клиент не смог установить подключение к локальному адресу localhost: 7123.' Я исправить это ... – SirBT

0

Проблема заключалась в том, что переменная среды не была прочитана метеоритом, и хотя она была перезаписана на стороне клиента, каким-то образом сервер подключился к Google с неправильным URL-адресом обратного вызова.

Теперь для решения ...Я начал, гарантируя, что настройки в конфигурации службы Google обнуления, запустив в терминале после убийства приложения:

meteor reset 

В отдельном терминале, я тогда начал ngrok генерировать ссылку туннеля:

./ngrok http 7123 

Уступая связь туннеля:

http://adba9b9f.ngrok.io/ 

в отдельном терминале я начинаю мое приложение, назначив его «порт 7123» и установка «http://adba9b9f.ngrok.io» как абсо luteUrl так:

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

Для подтверждения того, что эта команда была выполнена, я напечатал это в браузер консоли

Meteor.absoluteUrl() 

Отклик:

"http://adba9b9f.ngrok.io" 

Указывает, что Meteor. Команда absoluteUrl() прошла успешно.

Далее я доступ мое приложение через «http://adba9b9f.ngrok.io» туннель и нажал на кнопку «Настройка Google», где РАДОСТНО заметил, что Уполномоченные происхождение JavaScript были приравнены: http://adba9b9f.ngrok.io и Авторизованный перенаправлять Юрис пресет: http://adba9b9f.ngrok.io/_oauth/google

Затем я заполнил раздел «Идентификатор клиента» и «Секрет клиента» с данными из учетных данных google и обновил учетные данные google с помощью сведений о настройке и сохранении настроек кнопки google.

С удовольствием скажу ... Все работает сейчас.