gpt4 book ai didi

ruby-on-rails - 使用 Facebook Graph API 查找用户的好友

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:12 24 4
gpt4 key购买 nike

我试图让已将他们的 Facebook 帐户连接到我的 Rails 应用程序的用户找到他们已经在该应用程序中注册的 Facebook 好友,最好以类似索引的格式(类似于 Formspring 的显示)。

目前我正在使用 Devise、OAuth+Fbook Javascript SDK 和 Koala。我有每个连接他们的 Facebook 的用户的 Facebook UID 保存在数据库中,但我不知道如何过滤 Facebook API 调用的结果 @friends = @graph.get_connections("me", "friends")以便显示具有与 API 调用数据匹配的 UID 的用户。

有什么想法吗?可能有更好的方法,所以让我知道是否需要任何其他信息。非常感谢您的帮助!

编辑(用户 Controller 中索引操作的屏幕截图)

enter image description here

在@oauth 中注意,应用程序 ID 和应用程序密码在示例图像中被裁剪掉了

最佳答案

如果您可以获得用户 friend 的 UID 数组,您可以使用 IN 在单个 SQL 语句中找到它们(这里有一些手动操作和/或伪代码,具体取决于属性等) :

uids = @friends.collect(&:uid)
# uids is an array of Facebook UID's, say [1234, 5678, 9012]
registered_friends = User.where('fb_uid IN (?)', uids)
# "SELECT users.* FROM users WHERE (fb_uid IN (1234, 5678, 9012))"

如果您的 Facebook 数据在另一个模型中,您可以选择关闭该模型并执行 includes 以引入用户。

registered_friends = Authorizations.where(:type => 'Facebook') \
.where('fb_uid IN (?)', uids).includes(:user).collect(&:user)

[更新]

看起来 Koala 返回一个基于字符串的哈希数组,因此您将无法使用 collect(&:id) 获取 ID。这是我用来在控​​制台上获取 ID 数组的方法(显然敏感数据被屏蔽):

pry(main)> oauth = Koala::Facebook::OAuth.new 'xxxxxxx', 'yyyyyyyyy'
=> #<Koala::Facebook::OAuth:0x00000100d03be8>
pry(main)> token = 'zzzzzzzzzz'
=> "zzzzzzzzzz"
pry(main)> graph = Koala::Facebook::GraphAPI.new token
=> #<Koala::Facebook::GraphAPI:0x00000100ce3ac8>
pry(main)> friends = graph.get_connections "me", "friends"
=> [{"name"=>"A Friend", "id"=>"An ID"}, {"name"=>"Another Friend", "id"=>"Another ID"}]
uids = friends.collect { |f| f["id"] }
=> ["An ID", "Another ID"]

此外,如果您遵循 Rails 约定,Services 表的 id 字段将成为记录的主键,而不是 Facebook ID服务用户,因此您可能需要在另一个字段上进行查询。

关于ruby-on-rails - 使用 Facebook Graph API 查找用户的好友,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5799627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com