确定用户是否是Facebook好友(解析)

时间:2014-04-24 06:43:33

标签: facebook facebook-graph-api ruby-on-rails-4 koala-gem facebook-friends

我想知道当前用户是否是使用Koala的根节点用户的朋友,如果是,请打印一条声明:您是朋友。 我的问题是解析从facebook返回的数据。

user.rb

def facebook
  @facebook ||= Koala::Facebook::API.new(oauth_token)
  block_given? ? yield(@facebook) : @facebook
rescue Koala::Facebook::APIError => e
  logger.info e.to_s
  nil # or consider a custom null object
end

def facebook_friend
  facebook.get_connection("me", "friends/#user.user_id")
end

Profile.html.erb

<% if current_user.facebook_friend.include?(@user.uid)? %>
  <p> you are friends</p>               
<% else %>
  <p> you are not friends</p>   
<% end %>

输出:

<%= current_user.facebook_friend %>

将返回:[{&#34; name&#34; =&gt;&#34; Elizabeth&#34;,&#34; id&#34; =&gt;&#34; 100008217009369&#34;}] < / p>

<%= @user.uid %>

将返回:100008217009369

感谢!!!

1 个答案:

答案 0 :(得分:0)

比我想象的容易得多: 在用户模型中简单使用了Koala方法:

def facebook_friend(user)
  facebook.get_connection("me", "friends/#{user.uid}")
end

def my_friends_list
  facebook.get_connection("me", "friends")
end

然后在Profile View中,添加current_user和@user作为参数:

<% if @user.uid.present? %>
  <% if signed_in? && current_user == @user %>
    <p><%= current_user.my_friends_list.count %> friends</p>
  <% elsif current_user.facebook_friend(@user).empty? %>
    <p><%= current_user.mutual_friends.count %> friends in common</p>
  <% else %>
    <p>You are Facebook friends</p>
  <% end %>
<% else %>
  <p>Not connected</p>
<% end %>