@alexnotonfire

Как сделать аутентификацию через одноклассники на Angularjs?

Мне необходимо реализовать аутентификацию через социальную сеть одноклассники на своем проекте с использованием Angularjs. Может кто-нибудь ознакомлен какие инструменты использовать для данной цели? Пока я не находил ничего подходящего на просторах интернета. Спасибо заранее.
  • Вопрос задан
  • 769 просмотров
Решения вопроса 1
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
Мы делали на Ember.js, но смысл тот же - фреймворк можно вообще не использовать.

https://github.com/incubus/omniauth-odnoklassniki - ставим себе гем для айтентификации.

По нажатию на кнопку - открываем новое окно с адресом аутентефикации

Пример кода на Ember.js но смысл должен быть понятен
SomeApp.SocialLoginButtonView = Ember.View.extend(
  tagName: "a"
  attributeBindings: ['href']

  click: (e)->
    e.preventDefault()
    provider  = $(e.currentTarget).attr('href')

    url = "/users/auth/#{provider}?transition_to_root=true"
    window.open(
      url, '_blank',
      'width=600,height=500,location=yes,resizable=yes,scrollbars=yes'
    )
)


Пример контроллера

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

  layout 'blank'

  def facebook
    sign_in_with_oauth_data(request.env['omniauth.auth'])
  end

  def twitter
    sign_in_with_oauth_data(request.env['omniauth.auth'])
  end

  private

  def sign_in_with_oauth_data(oauth_data)
    unless user_signed_in?
      user =  User.find_or_create_with_oauth(oauth_data)
      sign_in :user, user
      MailWorker.perform_in(1.hour, user.id, :account_dropoff)
    end

    @success = current_user.register_social_profile(normalize_oauth_data(oauth_data))
    @service_name = oauth_data.provider

    render 'shared/social_authentication'
  end

  def normalize_oauth_data(oauth_data)
    { service_name: oauth_data.provider, uid: oauth_data.uid, access_token: oauth_data.credentials.token, secret_key: oauth_data.credentials.secret }
  end
end


Контроллер рендерит представление - javascript, который отправляет данные родительскому окну и закрывает окно авторизации

<script type="text/javascript" charset="UTF-8">
  <% if @success %>
      window.opener.SomeApp.sendSuccess()
  <% else %>
    window.opener.SomeApp.sendFailure()
  <% end %>

  window.close();
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Бёрете любой oauth2 для angular и пишете реализацию для ОК.
Либо же смотрите в сторону rails omniauth odnoklassniki.
Ответ написан
Комментировать
@Drm
Думаю, Вам сюда https://apiok.ru/wiki/pages/viewpage.action?pageId...

готовые решения Вы найдете едва ли, но если раберетесь с API, то сможете сделать аутентификацию через любую социальную сеть
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы