У меня есть простое приложение Meteor js, которое позволяет вам создать учетную запись пользователя и войти в нее или войти в свою существующую учетную запись Google через oauth (благодаря пакету accounts-google
).
При использовании приложения я ввожу свой логин и пароль, все работает нормально. Однако, когда я нажимаю «Войти через Google», всплывающее окно google oauth просит меня выбрать, какую учетную запись Google я хочу использовать для этого входа. Я выбираю учетную запись, всплывающее окно ждет секунду, закрывается, а затем ничего не происходит. Никаких блокируемых всплывающих окон, сообщений о неудачном входе в систему. Как будто вообще ничего не произошло.
Я уверен, что пользователь никогда не определяется, когда я использую вход по протоколу oauth, потому что Meteor.user()
дает мне null
в консоли JS.
Что здесь может происходить? Или как мне это отладить? Предложения приветствуются.
P.s. Если потребуется дополнительная информация, я могу исправить.
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()
в обработчике кликов вашей формы входа, и он должен работать должным образом.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.