2009-07-24 6 views
17

Я пытаюсь написать простое приложение для пользователей OAuth в Rails. Я использую Authlogic для обработки аутентификации и плагина Authlogic OAuth, чтобы сделать это.Неявное создание пользователя с помощью Authlogic и Authlogic Плагин OAuth

Плагин oauth предоставляет пару помощников для отображения кнопки входа: oauth_login_button и oauth_register_button. Вместе с логикой Authlogic и запросом плагина эти две кнопки каким-то образом создают сеанс/пользователь.

Что произойдет после следующего: - если я использую вспомогательный помощник oauth_login_button, то объект сеанса не может быть сохранен, так как такого пользователя нет локально. - если я использую помощник oauth_register_button, то при каждом входе в систему после первого Rails жалуется, что маркер уже принят ... это означает, что он не может создать вторую копию для того же пользователя, что и правильно.

Проблема в том, что я не хочу, чтобы на моем сайте были зарегистрированы кнопки регистрации и входа в систему.

На стороне пользователя, что я хочу достичь, это единственная кнопка на стартовой странице, говоря что-то. например «Войти в Twitter», который пользователь должен щелкнуть, чтобы перейти на внутренние страницы сайта.

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

Любые подсказки о том, как это сделать?

Все образцы на Authlogic + OAuth я был в состоянии найти, кажется, не волнует, только одну кнопку для знака. :(

ответ

11

Кажется, я собираюсь ответить на этот вопрос сам.

Я использую следующий код для создания Входа кнопки (в Haml):

- form_tag({:controller => "users", :action => "create"}, {:method => "post"}) do 
    = oauth_register_button :value => "Sign In with Twitter" 

, а затем я просто создаю пользователь объект сеанса в методе создания класса UsersController, если пользователь уже существует :

Если пользователь является первым посетителем, то пользовательский объект успешно сохраняется в LINE A. И если это не так, и имеется токен oauth, мы пытаемся извлечь пользователя из базы данных и журнала его/ее.

+0

Именно то, что я просто искал. Спасибо –

+0

это очень полезно – Anurag

+0

Спасибо большое :) –

 Смежные вопросы

  • Нет связанных вопросов^_^