Ruby Twitter, как авторизовать пользователя?

У меня есть приложение, которое должно чирикать на странице пользователя.

Использование gem Twitter

У меня есть действие, которое должно создавать все вещи.

def call
  client = set_client

  client.token

  client.update!("I'm tweeting with @gem!")
end

Этот метод создает клиент для использования API

def set_client
  Twitter::REST::Client.new do |config|
    config.consumer_key        = "****"
    config.consumer_secret     = "****"
    config.access_token        = "****"
    config.access_token_secret = "****"
  end
end

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

Как я могу реализовать эту функцию, когда я получаю доступ пользователя к access_token и access_token_secret?


person mxgoncharov    schedule 07.10.2014    source источник


Ответы (1)


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

Gem omniauth-twitter упрощает этот процесс, и он даже объяснен в хорошем руководстве по railscasts.

Предполагая, что у вас настроен omniauth и UsersController с:

def create
  user = User.from_omniauth(env["omniauth.auth"])
end

Затем в модели пользователя:

def self.from_omniauth(auth)
  where(auth.slice("provider", "uid")).first || create_from_omniauth(auth)
end

def self.create_from_omniauth(auth)
  create! do |user|
    user.provider = auth["provider"]
    user.uid = auth["uid"]
    user.name = auth["info"]["nickname"]
    user.access_token = auth["credentials"]["token"]
    user.access_token_secret = auth["credentials"]["secret"]
  end
end

def set_client
  Twitter::REST::Client.new do |config|
    config.consumer_key        = "****"
    config.consumer_secret     = "****"
    config.access_token        = access_token
    config.access_token_secret = access_token_secret
  end
end

Дополнительная информация: трехсторонняя авторизация и руководство по Railscasts

person user2140039    schedule 07.10.2014
comment
Ссылки на трехэтапную авторизацию и руководство по Railscasts. Извините, что не разместил ссылки в ответе, я только что присоединился к сайту, и он не позволил мне добавить больше одной. - person user2140039; 07.10.2014