Вход через социальную сеть Oauth с использованием бессессионного API MEAN.js Restful

Я разрабатываю Restful API с использованием MEAN.js, который будет использоваться веб-сайтом AngularJS и мобильными приложениями Phonegap.

Я хотел бы, чтобы пользователь мог создать учетную запись и/или войти в систему с помощью Faceboo, Google и Twitter.

Я пытаюсь использовать тот же пример кода, который поставляется с начальным приложением MEAN.js, но со стороны узла, на порту 3000, обслуживающем только API, и веб-сайт, работающий на другом сервере (в настоящее время на порту 9000).

Я уже реализовал аутентификацию с помощью токена, используя пользовательскую локальную стратегию Passport, которая генерирует токен, и стратегию носителя для аутентификации вызовов API.

Но у меня проблемы с социальным входом, чтобы связать социальные учетные записи с существующими пользователями.

Из клиента Angular я вызываю конечную точку API, которая перенаправляет пользователя к провайдеру oauth (например, Twitter). Когда пользователь возвращается, моя подача ничего не знает о зарегистрированном пользователе, так как я больше не использую сеансы.

Я пытался вернуть токен провайдера клиенту, но у меня возникли проблемы с анализом URL-адреса anguler. Затем я закодировал другую страницу вне angular, которая получает токен провайдера и вызывает конечную точку API, отправляющую токен oauth и токен, выданный моим API. Это сработало для Google, но не для Twitter. Кажется, твиттеру нужна сессия.

В любом случае, каков наилучший подход для достижения того, чего я хочу? Как я могу заставить это работать?


person Rodrigo Otávio    schedule 20.03.2015    source источник


Ответы (2)


Поскольку вы используете Angularjs, взгляните на эту библиотеку Angularjs https://github.com/sahat/satellizer. . Библиотека в значительной степени открывает всплывающее окно oauth и проверяет URL-адрес всплывающего окна на наличие токенов. Вы можете легко воспроизвести этот подход или просто использовать эту библиотеку. Он работает с несколькими поставщиками социальных сетей, такими как Twitter, и его легко добавить.

person mbejda    schedule 27.04.2015

Мне было нужно то же самое, и поэтому я решил создать свой собственный. Он все еще находится в разработке, но должен дать вам хороший старт. Не стесняйтесь создать запрос на включение и помочь сделать его лучше. Может быть, мы сможем в конечном итоге объединить его с их кодовой базой.

https://github.com/elliottross23/MeanJsSocialLoginTokenAuth

person Ero    schedule 18.02.2017