Rails API: аутентификация пользователей в собственных мобильных приложениях с использованием имени пользователя/пароля иIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Rails API: аутентификация пользователей в собственных мобильных приложениях с использованием имени пользователя/пароля и

Сообщение Anonymous »

Уже несколько дней я рвал на себе волосы, пытаясь понять, как добавить аутентификацию по имени пользователя и паролю в мой мобильный API Rails.
Вот краткий обзор моего текущий процесс аутентификации:
Изображение
  • Пользователь выбирает «войти через Facebook» в мобильном клиенте, клиент
    перенаправляется в приложение Facebook и запрашивает access_token
  • В случае успеха Facebook отвечает с токеном доступа, и клиент
    перенаправляется обратно в мое приложение.
  • Клиент отправляет токен доступа в мой API p>
  • Мой API использует драгоценный камень коалы, чтобы проверить действителен ли токен доступа.
  • Если токен действителен, Facebook отправляет данные пользователя в API
    где создается новый пользователь. Если пользователь уже существует, мой API отправляет данные пользователя.
Мой API обрабатывает токен доступа на шаге 4. как показано ниже:

Код: Выделить всё

      def self.authenticate_user_from_facebook(fb_access_token)
user = User.new
graph = Koala::Facebook::API.new(fb_access_token)
profile = graph.get_object('me')

#user['fb_id']    = profile['id']
#user['fb_token'] = fb_access_token

# Generate user hash
uhash = Hash.new
uhash['provider'] = 'facebook'
uhash['uid']      = profile['id']

uhash['info'] = Hash.new
uhash['info']['nickname']   = profile['username']
uhash['info']['name']       = profile['name']
uhash['info']['email']      = profile['email']
uhash['info']['first_name'] = profile['first_name']
uhash['info']['last_name']  = profile['last_name']
uhash['info']['verified']   = profile['verified']

uhash['info']['urls'] = Hash.new
uhash['info']['urls']['Facebook'] = profile['link']

uhash['credentials'] = Hash.new
uhash['credentials']['token'] = fb_access_token

uhash['extra'] = Hash.new
uhash['extra']['raw_info'] = Hash.new

#Save the new data
user = User.apply_auth(uhash)
return user
end

def self.apply_auth(uhash)
User.where(:uid => uhash['uid'], :provider => uhash['provider']).first_or_create do |user|

user.provider = uhash['provider']
user.uid      = uhash['uid']
user.nickname = uhash['info']['nickname']
user.email    = uhash['info']['email']

user.name       = uhash['info']['name']
user.first_name = uhash['info']['first_name']
user.last_name  = uhash['info']['last_name']
end
end
После создания пользователя он может отправлять запросы к моему API, используя свой токен доступа, как показано ниже:
Изображение

На шаге 2 API использует koala для проверки токена доступа пользователей. Это делается путем применения следующего before_filter ко всем контроллерам.

Код: Выделить всё

before_filter :current_user
и в моем application_helper.rb

Код: Выделить всё

def current_user
@current_user ||= User.authenticate_user_from_facebook(params[:access_token])
end
Каждый раз, когда пользователь делает запрос к моему API, драгоценный камень koala используется для проверки правильности токена, а затем запрос обрабатывается.
Сейчас я пытаюсь добавить аутентификацию только с использованием имени пользователя и пароля.
Вещи, которые я рассмотрел
Я постоянно ссылался на Railscast 235, 209, 250, 82 и читал об OAuth2. У меня есть базовое представление о том, как работает аутентификация, но у меня возникли проблемы с его применением к текущему процессу аутентификации.
Разработать аутентификацию по токену
Ссылка на Railscast 235 , 209, и это сообщение в блоге:
http://matteomelani.wordpress.com/2011/ ... e-devices/
Я понимаю как войти в систему и подтвердить пользователя, который входит в систему с именем пользователя и паролем. Однако я не понимаю, как это будет сочетаться с моим процессом входа в Facebook. Я не понимаю, как создать сеанс с помощью devise для пользователя, у которого уже есть токен доступа, сгенерированный Facebook.
OAuth2
Создание моего API поставщик OAuth2 кажется хорошим вариантом, но перенаправление в браузер кажется глупым, и я не знаю, возможно ли перенаправить обратно из браузера в мое приложение.Аутентификация с нуля
Это вариант, который я подумываю использовать, но я бы заново изобрел велосипед.
Любой совет приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/189 ... assword-or
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»