6

Kullanıcıların normal kullanıcı hesaplarına eklenmiş olan Facebook/Twitter/Gowalla/etc kullanarak kayıt yapmasına izin vermek için OmniAuth + Devise kullanıyorum. Artık bir kullanıcı bunlardan herhangi birini veya hesabını kullanarak giriş yaptığında, tüm sosyal ağları bir kimlik doğrulama tablosuna eklenir.OmniAuth + Çekme Tweets, FB Rehber, vb

Bu sağlayıcılardan (tweet'ler veya Facebook Rehberleri vb.) Herhangi birinden içerik almam gerekiyor. Anladığım kadarıyla farklı bir mücevher, eklenti kullanmam gerekecek Bu taşlar ile çalışmam gereken yapılandırma (ve istekleri) bana kafa karıştırıcı.

Omniauth.rb'deki sağlayıcı yapılandırma öğelerine erişebilmem gerekir, böylece API Anahtarları ve Gizli Anahtarlarım var, o zaman istekleri yapmak için oAuth öğelerinden jetonları yakalayabilmem gerekir.

gibi diğer taşlar oauth_token, oauth_secret ve oauth_token gibi görünüyor, ancak OmniAuth çalışmıyor.

Muhtemelen, Ruby, Rails ve oAuth için çok yeni olduğumu söyleyebileceğiniz gibi, bu çok zorlu bir uygulama olduğu ortaya çıkıyor. Yardım çok gerekli.

cevap

20

Sıralama!

http://railscasts.com/episodes/236-omniauth-part-2 tarif kimlik doğrulama tablosuna belirteci ve gizli eklendi ancak iki parametre almak authentication.build hattı değiştirildi: O sırada http://dev.twitter.com/pages/oauth_single_token#ruby

class CronController < ApplicationController 

    def recent_tweets 
     # Exchange your oauth_token and oauth_token_secret for an AccessToken instance. 

     def prepare_access_token(oauth_token, oauth_token_secret) 
      consumer = OAuth::Consumer.new("APIKey", "APISecret" 
       { :site => "http://api.twitter.com" 
       }) 
      # now create the access token object from passed values 
      token_hash = { :oauth_token => oauth_token, 
             :oauth_token_secret => oauth_token_secret 
            } 
      access_token = OAuth::AccessToken.from_hash(consumer, token_hash) 
      return access_token 
     end 

     auth = current_user.authentications.find(:first, :conditions => { :provider => 'twitter' }) 

     # Exchange our oauth_token and oauth_token secret for the AccessToken instance. 
     access_token = prepare_access_token(auth['token'], auth['secret']) 

     # use the access token as an agent to get the home timeline 
     response = access_token.request(:get, "http://api.twitter.com/1/statuses/home_timeline.json") 

     render :json => response.body 
    end 
end 

kod örneği kullanılır

authentications.build(
    :provider => omniauth['provider'], 
    :uid => omniauth['uid'], 
    :token => omniauth['credentials']['token'], 
    :secret => omniauth['credentials']['secret'] 
) 

içeriği current_user.authentications'dan çekmek (ilkini sadece bir tane olması gerektiği gibi bulmak) Işığı ve güvenliği ve alllini iyi bir şekilde yakalayabilirim.

Şimdi bunu değiştirebilir, bir şeyler kaydedebilir, JSON ile bayıltabilir ve ihtiyacım olanı alabilirim. Eminim Facebook çok benzer olacak.

+0

Tatlı adam! 2 numaradan sonra ne demek istediğini tam olarak biliyorum, şimdi nasıl veri alacağım. Bütün zaman vardı ve beni doğru yönde + 1 işaret ettin! – s84

6

Bu ne arıyor? http://railscasts.com/episodes/236-omniauth-part-2 :) E-posta gibi verilerin nasıl alınacağını gösterir. Aradığın şeyin bu olduğundan emin değilim.

+2

Kapat, Bunu takip ettim ama sonraki adımdan emin değildim. Bu harika bir video ve buraya inen herkese yardım edebilir, bu yüzden teşekkür ederim :) –