2014-01-26 6 views
1

В настоящее время я нахожусь в шаге 3 обработки получения маркера oauth/secret от пользователя, пытающегося войти в систему через Twitter. https://dev.twitter.com/docs/auth/implementing-sign-twitterРубин и Twitter: Как получить токен доступа из токена запроса?

Шаг 3 сообщает, что я отправляю этот запрос в API, но я придерживаюсь того, как это сделать. В настоящее время у меня есть Oauth_token и oauth_verifier, но как я могу отправить этот запрос POST для получения пары oauth_token, oauth_token_secret?

Есть ли стандартный камень Oauth Ruby, который я могу использовать для отправки этого запроса POST? Я вижу примеры онлайн, где я передаю объект @accessToken, но у меня нет такого объекта. У меня есть только oauth_token и oauth_verifier (как строки). Учитывая эти две вещи, как мне преобразовать их в oauth_token и oauth_token_secret?

POST /oauth/access_token HTTP/1.1 
User-Agent: themattharris' HTTP Client 
Host: api.twitter.com 
Accept: */* 
Authorization: OAuth oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w", 
        oauth_nonce="a9900fe68e2573b27a37f10fbad6a755", 
        oauth_signature="39cipBtIOHEEnybAR4sATQTpl2I%3D", 
        oauth_signature_method="HMAC-SHA1", 
        oauth_timestamp="1318467427", 
        oauth_token="NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0", 
        oauth_version="1.0" 
Content-Length: 57 
Content-Type: application/x-www-form-urlencoded 

oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY 
+0

был мой ответ был полезен? –

ответ

0

да Omniauth gem для аутентификации с Twitter. Документация прямолинейна.

Я лично использую Omniauth, интегрированный с Devise, и Twitter gem для доступа к Twitter - работает очень хорошо.

Надеется, что это помогает, Eugen

0

Общей процедура заключается в следующем:

  1. Вы обстреливать зарегистрировать свое приложение на twitter development page.

  2. Затем установите соответствующий Имя, Описание и Сайт значения для вашего приложения.

    App Name 
    
    App Description 
    
    http://your_app_domain.zone:3000/ 
    
  3. Изменения Тип приложения ваше приложение, по умолчанию он только для чтения типа доступа.

  4. Установка обратного вызова URL для yuor применения:

    http://your_app_domain.zone:3000/auth/twitter/callback 
    
  5. Храните все ключи и секреты, которые shewn на инструмент щебет страницы OAuth: маршрут

    Consumer key: 
    
    Consumer secret: 
    
    Access token: 
    
    Access token secret: 
    
  6. Setup на вашем сайте с devise, или devise-подобный камень с указанным ключом щебета s и секреты для включения механизма проверки подлинности. Список маршрутов теперь должен включать в себя маршрут /auth/twitter.

  7. Идя в http://your_app_domain.zone:3000/auth/twitter вы будете перенаправлены на щебет сайт, и упал обратно на ваш сайт с прошел oauth_token

Но

Вы просто получить эти ключи и секреты, и примените затем в своем приложении, избегая и баллов:

client = Twitter::REST::Client.new do |config| 
    config.consumer_key  = "YOUR_CONSUMER_KEY" 
    config.consumer_secret  = "YOUR_CONSUMER_SECRET" 
    config.access_token  = "YOUR_ACCESS_TOKEN" 
    config.access_token_secret = "YOUR_ACCESS_SECRET" 
end 
3

Попробуйте что-то вроде следующих действий рельсов контроллера, используя twitter и oauth драгоценных камней:

def redirect 
    consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, { 
     :site => "https://api.twitter.com", 
     :scheme => :header 
    }) 

    request_token = consumer.get_request_token(:oauth_callback => CALLBACK_URL) 
    session[:twitter_request_token] = request_token 

    redirect_to request_token.authorize_url #=> "https://api.twitter.com/oauth/authorize?oauth_token=XYZ" 
    end 

    def callback 
    request_token = session[:twitter_request_token] 

    access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier]) 
    client = Twitter::REST::Client.new(
     :consumer_key => CONSUMER_KEY, 
     :consumer_secret => CONSUMER_SECRET, 
     :access_token => access_token.token, 
     :access_token_secret => access_token.secret 
    ) 
    twitter_user = client.user 

    redirect_to root_url # or do something with the twitter_user 
    end 

Смотрите также: http://barkingiguana.com/2009/10/13/twitter-oauth-authentication-using-ruby/

+0

Спасибо за сохранение дня! – grilix

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