发帖、评论、点赞、删除全搞定:fb_graph Facebook封装库CRUD操作完全教程 发帖、评论、点赞、删除全搞定fb_graph Facebook封装库CRUD操作完全教程【免费下载链接】fb_graphThis gem doesnt support FB Graph API v2.0. Please use fb_graph2 gem instead.项目地址: https://gitcode.com/gh_mirrors/fb/fb_graphfb_graph是一个 Ruby 编写的 Facebook Graph API 全栈封装库gem它把发帖、评论、点赞、删除等 Facebook 社交操作全部封装成简单的对象方法调用让 Ruby 开发者无需手写 HTTP 请求即可完成完整的 CRUD 操作。本教程带你快速掌握这个库的增删改查全流程。⚠️重要提示fb_graph 基于 Graph API v1.0 开发Facebook 已于 2014 年 4 月 30 日关闭 v1.0。因此该库已标记为非维护状态deprecated如果你的项目使用 Graph API v2.0请改用 fb_graph2 gem。下面内容仍以 v1.0 时代的用法为准同样适用于理解其设计思路。什么是 fb_graph一分钟看懂设计思路fb_graph 的核心设计只有三个概念理解了就能上手所有操作Node节点所有 Facebook 对象用户、主页、帖子、评论…都继承自Node每个对象自带fetch读取、update更新、destroy删除三种基本能力对应 GET / POST / DELETE 三种请求。Connection连接对象之间的关系如用户的feed、帖子下的comments、likes都以连接形式暴露读连接用方法名写连接用带感叹号的方法名如feed!。Collection集合列表类结果自动分页直接调用next/previous就能翻页。这种命名规则贯穿整个库不带!是查询带!是写入destroy是删除。相关源码节点基类fetch/update/destroy 的实现lib/fb_graph/node.rb集合与分页lib/fb_graph/collection.rb安装步骤一条命令搞定fb_graph 通过 RubyGems 分发安装只需一条命令gem install fb_graph如果你用的是 Bundler在Gemfile中加入gem fb_graph后执行bundle install即可参考项目根目录的Gemfile。认证准备获取 Access Token所有写操作都需要access_token。fb_graph 内置了 OAuth2 客户端支持 JavaScript SDK 和标准 OAuth2 两种授权方式源码lib/fb_graph/auth.rbfb_auth FbGraph::Auth.new(YOUR_APP_ID, YOUR_APPLICATION_SECRET) client fb_auth.client client.redirect_uri http://your.client.com/facebook/callback # 用户授权后在回调中换取 access_token client.authorization_code params[:code] access_token client.access_token! :client_auth_body # 拿到我这个用户对象后续所有操作都以它为起点 me FbGraph::User.me(access_token)User.me定义在lib/fb_graph/user.rb中它返回一个User对象是整个 CRUD 教程的操作入口。快速发帖feed! 与 link! 两种写法发布状态更新墙贴feed!支持纯文字、图片、链接卡片三种形式一次调用即可发布me.feed!( :message Updating via FbGraph, :picture https://graph.facebook.com/matake/picture, :link https://example.com/article, :name 文章标题, :description 文章摘要 )方法返回新建的Post对象含id方便后续管理。实现见lib/fb_graph/connections/feed.rb。分享外部链接只想分享一条链接时用link!更简洁me.link!( :link https://example.com/article, :message 推荐阅读 )创建事件并响应event me.event!(:name FbGraph 测试活动, :start_time 1.week.from_now) event.attending!( :access_token ACCESS_TOKEN) # 接受 event.maybe!( :access_token ACCESS_TOKEN) # 待定 event.declined!( :access_token ACCESS_TOKEN) # 拒绝读取数据fetch 与连接查询懒加载是 fb_graph 的一大特点new出来的对象不会发起请求只有调用fetch或某个连接方法时才真正访问 API。# 惰性创建此时 name 为 nil user FbGraph::User.new(matake, :access_token ACCESS_TOKEN) user user.fetch # 真正发起 GET 请求 user.name # Nov Matake读取关系数据只需说人话的方法名user.feed # 动态时间线 user.posts # 发布的帖子 user.friends # 好友列表 user.likes # 点赞过的内容 page.feed # 主页的帖子列表指定返回字段默认只返回基础字段需要更多字段时用:fields参数user.events({:fields owner,name,description,picture})分页翻页next 与 previous任何列表结果都是Collection翻页零成本likes user.likes # 一页 FbGraph::Like 列表 likes.next # 下一页 likes.previous # 上一页 likes.collection.next # 分页参数 Hash可传给其他查询分页参数的解析逻辑在lib/fb_graph/collection.rb的fetch_params中。评论与回复comment! 和 reply!对帖子发表评论返回新建的Comment对象post FbGraph::Page.new(117513961602338).feed.first comment post.comment!( :access_token ACCESS_TOKEN, :message 我来测试一下评论功能 )读取帖子下的全部评论同样简单post.comments # Array of FbGraph::Comment实现位于lib/fb_graph/connections/comments.rb其中reply!方法可对某条评论进行二级回复对Comment对象调用即可。点赞与取消点赞like! 与 unlike!点赞是典型的布尔操作——调用后返回true表示成功post FbGraph::Page.new(117513961602338).feed.first post.like!( :access_token ACCESS_TOKEN) # 点赞 post.unlike!(:access_token ACCESS_TOKEN) # 取消点赞like!/unlike!定义在lib/fb_graph/connections/likes.rb的Likable模块中帖子、评论、照片等对象都可以用。删除操作destroy 一键清理fb_graph 中删除统一用destroy点赞类的删除用unlike!。它对任意节点都有效# 删除评论 comment.destroy(:access_token ACCESS_TOKEN) # 删除帖子 post.destroy(:access_token ACCESS_TOKEN)destroy在lib/fb_graph/node.rb中实现内部发送 DELETE 请求如果对象不存在会抛出FbGraph::Exception::NotFound异常记得在你的应用里捕获处理。CRUD 操作速查表操作方法返回值源码位置发帖状态me.feed!(params)Post对象lib/fb_graph/connections/feed.rb分享链接me.link!(params)Link对象lib/fb_graph/connections/links.rb读取对象obj.fetch对象本身lib/fb_graph/node.rb读取列表obj.feed/obj.comments/obj.likes对象数组lib/fb_graph/connections/翻页list.next/list.previous下一页数组lib/fb_graph/collection.rb评论post.comment!(params)Comment对象lib/fb_graph/connections/comments.rb点赞post.like!(params)truelib/fb_graph/connections/likes.rb取消点赞post.unlike!(params)truelib/fb_graph/connections/likes.rb删除obj.destroy(params)truelib/fb_graph/node.rb新手常见坑位与排查技巧FbGraph::Unauthorized异常私有连接albums、events、likes等必须携带有权限的access_token公开连接如feed、friends可以匿名读取。调试请求日志写操作出问题时开启调试模式可看到完整 HTTP 请求FbGraph.debug! # 或只针对一段代码FbGraph.debug { ... }调试过滤器见lib/fb_graph/request_filters/debugger.rb。API 返回 false 视为 404这是 Graph API 的未文档化行为对象不存在时返回字符串falsefb_graph 会将其统一转为NotFound异常处理逻辑在lib/fb_graph/node.rb的handle_response中。版本切换如确需兼容 v2.0可在初始化时调用FbGraph.v2!或FbGraph.api_version v2.0但官方仍建议使用 fb_graph2。写在最后fb_graph 用方法名即操作的 Ruby 风格把 Facebook 的发帖、评论、点赞、删除四大社交动作压缩成了几行代码——feed!发帖、comment!评论、like!点赞、destroy删除四步完成一次完整的 CRUD 闭环。虽然该库因 API 升级已进入维护期但它的对象模型与连接命名设计仍是学习 Graph API 封装的优秀范本。新项目请认准 fb_graph2思路完全相通。【免费下载链接】fb_graphThis gem doesnt support FB Graph API v2.0. Please use fb_graph2 gem instead.项目地址: https://gitcode.com/gh_mirrors/fb/fb_graph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考