私は、ライアン・ベイツがFacebookで認証するために使用するFacebookRailscasthttp : //media.railscasts.com/assets/episodes/videos/360-facebook-authentication.ogvでの認証をフォローgem 'omniauth-facebook'
しました。Railscastの最後に、彼はKoalaを紹介します。これにより、開いているグラフAPIを操作できます。ライアンは、宣誓トークンをパラメーターとしてこれに渡すように指示します
@graph = Koala::Facebook::API.new(your_oauth_token)
誓いのトークンをどこから入手できるかわからないため、これを機能させるのに問題があります。説明させてください…。
sessions_controller.rbには、これがあります
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_url
end
これにより、オムニ認証情報がユーザーモデルのデータベースに保存されます。
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.save!
end
だから私はにuser.oath_token
渡される必要があると思います
@graph = Koala::Facebook::API.new(your_oauth_token)
しかし、私はそれを機能させることができません。
メインコントローラーとインデックスアクションがあると想像してください。
Main_controller.rb
def index
@graph = Koala::Facebook::API.new(how do I get the oauth token in here?)
end
質問 (セッションまたはデータベースのいずれかから)宣誓トークンをメインコントローラーのインデックスメソッドに取得するにはどうすればよいですか?
たとえば、application_controller.rbのヘルパーメソッドを使用します
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
main_controller.rbでこれを実行しようとしました
def index
@graph = Koala::Facebook::API.new(current_user.oauth_token)
@graph_data = @graph.get_object("/me/statuses", "fields"=>"message")
end
しかし、私が以下を使用してデータをループしようとしたとき
Views / main / index.html.erb
<% if current_user %>
Looping through your statuses:<br />
<ul>
<% @graph_data.each do |status| %>
<%= status["message"] %> (<i><%=status["updated_time"]%></i>)<hr>
<% end %>
</ul>
<% end %>
ステータスの更新はありませんでした