使用 Facebook Graph API 为页面“点赞”
Posted
技术标签:
【中文标题】使用 Facebook Graph API 为页面“点赞”【英文标题】:'Like' a page using Facebook Graph API 【发布时间】:2011-03-04 21:56:23 【问题描述】:使用 Graph API,我希望能够让授权用户“喜欢”一个页面。
我尝试发布以下内容
https://graph.facebook.com/$PAGE_ID/likes?access_token=$ACCESS_TOKEN
我在 JSON 响应正文中收到 HTTP 错误 500,并伴有“无效的 post_id 参数”。看起来/likes
资源适合喜欢墙帖而不是页面。如何让它与页面一起使用?
【问题讨论】:
【参考方案1】:Facebook 已宣布支持使用官方built-in Like action 在 Facebook 之外点赞 URL。您需要拥有publish_actions
权限。此图的网址是:
https://graph.facebook.com/[User FB ID]/og.likes?object=OG_OBJECT_URL&access_token=USER_ACCESS_TOKEN
但是,您目前不能使用它来喜欢 Facebook 上的页面,如 documentation states:
对于未与 Facebook 集成的 Facebook 页面或网站 认证,开发者应该继续使用Like按钮 社交插件。
【讨论】:
我不认为您可以使用内置的like 阳离子来为页面点赞。你能确认一下吗? 是否有 facebook 开发人员资源说您不能在 facebook 页面上使用内置的赞。不是我不相信你,而是我试图理解为什么会这样。您是否指的是内置赞文档页面上的此声明:“应用程序对内置赞操作的使用,与任何 Open Graph 操作一样,需要提交和批准。对于 Facebook 页面或网站未与 Facebook Authentication 集成,开发者应继续使用 Like 按钮社交插件。"? 这是当我尝试点赞 Facebook 页面时从图形 API 返回的错误消息:“(#100) 这种类型的对象尚不支持点赞操作。” @BK。这是否真的意味着除了使用“赞”按钮插件之外,没有其他方法可以为 Facebook 页面点赞? 如何从我想要的页面中找到 OG_OBJECT_URL?【参考方案2】:2016 年 6 月更新
仍然无法使用 Facebook API 为页面点赞,如 /user_id/likes
documentation page 关于创建/更新/删除中所述:
您无法在此端点上执行此操作。
在以前的版本中,信息更清楚(见下面的引文),但结果是一样的:这是不可能的。
2014 年 5 月
/user-id/likes
文档页面声明了 Facebook 页面的 Publishing Likes:
您无法使用此优势发布,因为无法通过任何 API 为 Facebook 主页点赞。如果您希望人们能够为您的应用中的页面点赞,您应该使用点赞按钮。
这是能够给我一个问题答案的最明显和最明确的陈述。
【讨论】:
【参考方案3】:如果您的应用是开放图形应用,现在您可以喜欢使用 api,不再需要按钮。
https://developers.facebook.com/docs/opengraph/actions/builtin/likes/
【讨论】:
如文档和 BK 的回答中所述,这不适用于 Facebook 页面,仅适用于其他对象【参考方案4】:如果您希望在 facebook 中的页面选项卡或画布页面中使用此功能(例如,允许从喜欢的页面中为该页面点赞),您可以使用 Tom Wells 在回复 Luke 时提出的建议。你首先在你的页面上嵌入他们喜欢按钮的 iframe 版本,然后在你的 JS 中简单地监听 edge.create
事件,如下所示:
FB.Event.subscribe('edge.create',
function(response)
alert('You liked the URL: ' + response);
// ...
);
在回调中,您可以处理用户点赞页面时发生的情况,例如离开点赞页面或显示仅点赞的内容。
当用户单击 iFrame 类似按钮时,您的 JS 代码应该会收到 edge.create
事件,假设 iFrame 已配置为指向相关页面的 url。
【讨论】:
我认为 OP 正在询问如何以编程方式执行此操作,也许是通过自定义控件传递“喜欢”的一种方式。【参考方案5】:我认为这是不允许的,除非是特定的合作伙伴网站,例如 yelp。原因是安全性,您可以在页面上放置一些 javascript,并让访问该页面的每个人在他们不知情的情况下“喜欢”它。
请参阅 Facebook 平台开发者论坛上的 How do I "Like" a URL?
【讨论】:
其实不然 - 图形 api 使用访问令牌通过要求用户明确授予对 facebook 应用程序的访问权限来防止此类安全问题。无论如何,我通过 facebook 将 iframe 嵌入到他们的喜欢按钮(打开图形 api)的首选路线解决了这个问题。 “喜欢”(通过 iframe 或 fbml)不是应用程序,因此不需要额外的权限,只需要您登录 facebook。我仍在寻找一种在 Facebook 托管的 iframe 中没有自定义 Like 按钮的方法。 卢克 - 我也是!让我们知道您是否找到了使用自定义按钮(在我的例子中是 android API)来点赞页面或应用的方法。【参考方案6】:您可以使用 Facebook api 使用以下代码为具有对象 ID 的对象点赞
[FBRequestConnection startForPostWithGraphpath:[NSString stringWithFormat:@"/%@/likes",object_id] graphObject:nil completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
//do you customisation post like here
];
【讨论】:
以上是关于使用 Facebook Graph API 为页面“点赞”的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook Graph 权限的 Instagram API
FB.API Facebook Open Graph 为某些用户的用户点赞返回空数据
Facebook Graph API返回页面事件的空数据响应[重复]