簡體   English   中英

如何通過Ruby獲取Facebook朋友列表

[英]how to fetch facebook friends list by Ruby

我正在嘗試使用Facebook圖形API獲取用戶的朋友列表。 但是我的應用只能列出第一個用戶的朋友列表。 例如,當我打開用戶6的朋友列表6時,它將顯示朋友列表1的內容。 有人知道為什么嗎? 我感謝您的時間和幫助!

user.rb

 class User < ActiveRecord::Base     
   has_many :friends

        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.email = auth.info.email 
          user.oauth_token = auth.credentials.token 
          user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
          user.save! 
          end   
        end 

        def friendslist 
        facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
          self.friends.where(:name => hash['name'], :uid => hash['id']).first_or_create 
          end   
        end

         private    def facebook    
       @facebook ||= Koala::Facebook::API.new(oauth_token) 
         end
end

user.html.erb

**<table>
  <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Friends</th>
  </tr>
    <% @user.each do |user| %>
  <tr>
    <td><%= user.name %></td>
      <td><%= user.email %></td>
      <td> <%= link_to "View Friends List", friend_path(user) %></td>
  </tr>
   <% end %>  
</table>**

friend.html.erb

**<table>
  <tr>
    <th>Friends</th>
  </tr>
   <% @friend.each do |friend| %> 
  <tr>
    <td>
        <%= friend.name %>
    </td>
  </tr>
   <% end %>  
</table>**

朋友控制器

class FriendController < ApplicationController

    def index
    @friend = Friend.all
      respond_to do |format|
     format.html
     format.json { render json: @friend }
    end
  end
end

您可能只需要更改...

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.where(:name => hash['name'], :uid => hash['id']).first_or_create 
      end   
  end

到(對於Rails <= 3)

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.find_or_create_by_name_and_uid(hash['name'],hash['id'])
      end   
  end

到(對於Rails 4)

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.find_or_create_by(:name => hash['name'], :uid => hash['id'])
      end   
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM