У меня проблема с аутентификацией facebook с помощью адаптера torii, ошибка: «Адаптер Torii должен реализовывать open
для открытия сеанса».
Я посетил много руководств и попробовал все представленные методы, но большинство из них, как правило, представляют собой старый код Ember, и ни один из них, похоже, не работает.
Текущее состояние: я могу войти в систему, у меня появляется всплывающее окно facebook, и я могу авторизоваться.
Используя fiddler, я также могу увидеть ответ от API, содержащий ответ JSON со всеми учетными данными от пользователя, с которым я прошел аутентификацию. В консоли firebase я вижу авторизованного пользователя, сбрасываю его пароль, запрещаю доступ,...
Все это наводит меня на мысль, что это «всего лишь» интерфейсная проблема, когда я не могу установить правильный «сеанс» для работы.
Моя конечная цель состояла бы в том, чтобы собрать соответствующие пользовательские данные и передать их в мою серверную часть firebase в качестве записи «пользователь», что позволяет быстро регистрироваться для посетителей сайта, но я буду более чем рад иметь активный сеанс, чтобы я мог остальное доделываю сам.
Как новичок во фронтенде (обычно я программирую на C#), Ember, возможно, был не лучшим выбором, чтобы освоить его, но сейчас я так далеко, я не собираюсь пускать все это на самотёк и выбирать другой. рамки.
Мой код:
конфиг/environment.js
firebase: {
apiKey: 'xxxxxxx',
authDomain: 'myappname.firebaseapp.com',
databaseURL: 'https://myappname.firebaseio.com',
storageBucket: 'myappname.appspot.com',
messagingSenderId: '1234567890'
},
torii: {
sessionServiceName: 'session'
}
torii-adapters/application.js (я изменил это так сильно, что даже не могу вспомнить исходный код, потому что ничего из того, что я здесь меняю/добавляю/удаляю, похоже, вообще ничего не делает.)
import Ember from 'ember';
import ToriiFirebaseAdapter from 'emberfire/torii-adapters/firebase';
export default ToriiFirebaseAdapter.extend({
firebase: Ember.inject.service(),
});
маршруты /application.js
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel: function() {
return this.get('session').fetch().catch(function() {
});
},
actions:{
login: function(provider) {
this.get('session').open('firebase', {
provider: provider,
}).then(function(data) {
console.log(data.currentUser);
});
},
logout: function() {
this.get('session').close().then(function() {
this.transitionTo('application');
}.bind(this));
}
}
});
приложение.hbs
<div class="container">
{{partial 'navbar'}}
<a {{action "signIn" "facebook"}} class="btn">{{fa-icon "facebook"}}</a>
<a {{action "signIn" "twitter"}} class="btn">{{fa-icon "twitter"}}</a>
<a {{action "signIn" "github"}} class="btn">{{fa-icon "github"}}</a>
<a {{action "signIn" "google"}} class="btn">{{fa-icon "google"}}</a>
{{outlet}}
</div>
ИЗМЕНИТЬ 1
Приведенный выше код дает мне намного больше ошибок после перезапуска сервера ember. Это причина моих бед? Все изменения, которые, казалось бы, ничего не меняли, не были зарегистрированы до перезагрузки сервера? Если это так, я, возможно, уже сто раз принимал правильное решение...
ИЗМЕНИТЬ 2
Изменен код, чтобы отразить актуальную проблему. Предыдущий код был безмерно испорчен, но я никогда не осознавал этого, потому что он не подхватывался до перезагрузки сервера.
EDIT 3 Нашел и попробовал это, но безрезультатно: https://stackoverflow.com/a/32079863/4309050