У меня есть простое приложение Meteor js, которое позволяет вам создать учетную запись пользователя и войти в нее или войти в свою существующую учетную запись Google через oauth (благодаря пакету accounts-google).

При использовании приложения я ввожу свой логин и пароль, все работает нормально. Однако, когда я нажимаю «Войти через Google», всплывающее окно google oauth просит меня выбрать, какую учетную запись Google я хочу использовать для этого входа. Я выбираю учетную запись, всплывающее окно ждет секунду, закрывается, а затем ничего не происходит. Никаких блокируемых всплывающих окон, сообщений о неудачном входе в систему. Как будто вообще ничего не произошло.

Я уверен, что пользователь никогда не определяется, когда я использую вход по протоколу oauth, потому что Meteor.user() дает мне null в консоли JS.

Что здесь может происходить? Или как мне это отладить? Предложения приветствуются.

P.s. Если потребуется дополнительная информация, я могу исправить.

0
James M. Lay 22 Авг 2014 в 02:34
Добавление кода настройки oauth всегда полезно, и имейте в виду, что правильную настройку необходимо выполнить и в консоли разработчика Google.
 – 
saimeunt
22 Авг 2014 в 03:03

1 ответ

Лучший ответ

Вы, вероятно, испортили конфигурацию oauth либо на стороне Meteor, либо на стороне Google Developers Console, так что вот краткое резюме.

Консоль разработчика Google:

В разделе API и аутентификация> Учетные данные создайте новый идентификатор клиента в разделе OAuth.

Выберите веб-приложение и укажите правильные URI перенаправления и источники JavaScript:

ПОВТОРНЫЙ МОЧЕЧНИК

http://localhost:3000/_oauth/google?close
http://your-production-domain.com/_oauth/google?close

ИСТОКИ JAVASCRIPT

http://localhost:3000
http://your-production-domain.com

Конфигурация метеора:

Обязательно добавьте эти пакеты:

meteor add accounts-google
meteor add service-configuration

В server / config.js добавьте эти строки из http://docs.meteor.com/#meteor_loginwithexternalservice

ServiceConfiguration.configurations.remove({
  service: "google"
});
ServiceConfiguration.configurations.insert({
  service: "google",
  clientId: "????????????????.apps.googleusercontent.com",
  secret: "????????????????"
});

В полях clientId и secret должны быть указаны значения в Google Developers Console.

Затем вызовите Meteor.loginWithGoogle() в обработчике кликов вашей формы входа, и он должен работать должным образом.

2
saimeunt 22 Авг 2014 в 03:00
Кажется, сейчас он работает, но я не уверен, почему. В любом случае, это лучшая информация, чем официальная документация. Спасибо.
 – 
James M. Lay
23 Авг 2014 в 11:48
Если я разрабатываю на удаленном компьютере с общедоступным URL-адресом, есть ли способ изменить URL-адреса обратного вызова разработчика, чтобы они не были localhost? Я знаю, что это старая ветка, но нигде не нашел этого ответа при поиске.
 – 
aviemet
9 Янв 2016 в 20:37