【问题标题】:What is Facebook app canvas and page tab?什么是 Facebook 应用画布和页面标签?
【发布时间】:2017-04-06 17:56:43
【问题描述】:

我花了很多时间阅读 FB 开发文档和教程,但我仍然对画布应用程序和页面选项卡是什么以及如何使用它们感到非常困惑。

我期望在我的网站中使用 FB SDK 是在登录屏幕上有“继续使用 facebook”按钮,有几个分享和点赞按钮,如果用户允许,可以向 facebook 发送通知。我的站点有内部消息系统,我想通知用户我的站点中发生了新消息或活动。这样,用户就不必每天都检查我的网站是否有活动,因为我预计很少有活动(每周大约很少活动),这对用户体验很重要。

我的一切都在运行,但在用户点击通知后,他会被带到画布应用程序。 FB 文档和教程侧重于代码示例,但我还没有找到任何关于画布应用程序的真正描述。如果没有这个基本的理解,我就无法完成我的通知逻辑,无法理解诸如“安全画布 url”之类的术语,并且基本上对用户体验没有信心(我希望尽可能好)。

如果我在 Google 上搜索“什么是 facebook 画布应用程序”,我会得到“Canvas 是 Facebook 上一种身临其境且富有表现力的体验,供企业讲述他们的故事并展示他们的产品。”。显然从下面的评论那是别的东西......

如果有人可以用简单的话解释一下什么是画布应用程序以及我应该如何使用,如果考虑到我的主要目标是通知用户我的网站中的活动到他们的 fb 帐户,我会很高兴。

我正在使用 CI 框架 PHP SDK v5。

【问题讨论】:

  • Canvas 和 Page Tab 应用程序的外部内容直接显示在 facebook.com 上的 iframe 中。它们只是您的应用可以在其上运行的不同平台的一部分。 (你用谷歌搜索的是错误的画布类型。Facebook 最近推出了这个新功能,不幸的是,它与已经存在的画布应用平台命名相同,这有点令人困惑。)
  • 很抱歉提出老问题,但我仍然很困惑。我想在某些事件发生时从我的会员网站向用户的 Facebook 帐户发送通知。尝试发布通知时,我收到异常Only web canvas apps can send app notifications。通过阅读文档画布应用程序似乎与游戏相呼应。这是否意味着我无法从会员网站发送通知?
  • 不,画布应用不必属于游戏类别。

标签: php facebook facebook-graph-api


【解决方案1】:

背景

在 Facebook 中,您创建在“平台”上运行的“应用程序”。作为一个非常简单的快速总结,应用可以运行的三种主要“平台”类型是:

  1. 您托管和控制的网站,但与 Facebook Graph API 集成(具有 Facebook 登录、发帖等),但在其他方面看起来像普通网站。您将这些托管在自己的服务器上。

  2. 设计为位于 Facebook 平台上的 iFrame 内的网站。这些应用程序通常还会与 Facebook Graph 进行交互。您仍然将它们托管在您自己的服务器上,但您还有一个额外的优势,即在页面加载时可以获得有关用户的有限信息。

  3. 也与 Facebook Graph 交互的独立程序(包括移动应用程序)。

您所说的是其中的第二个 - Facebook 上的 iFrame。

Facebook 提供两种方式来嵌入应用程序 iFrame:

  1. 一个是画布应用程序。这对 Facebook Header、Footer 和右侧的一些广告有最小的环绕。它最大化您的空间。 (例如https://apps.facebook.com/candycrush/?fbs=-1&fb_appcenter=1

  2. 另一个是“页面标签”(https://developers.facebook.com/docs/pages/tabs)。这更小,旨在坐在公司的“Facebook 页面”中,因此空间更小。然而,作为营销人员,它可以让您的公司拥有更多品牌。 (例如:https://www.facebook.com/NutellaANZ/app/595447743881506/

请注意,单个应用程序可以跨上述所有内容运行 - 画布、页面选项卡和独立的 HTML 页面。通过 API 的一些转换,您还可以为移动设备包装相同的代码并放在应用商店中。用户可以登录您的移动应用,您也可以让他们登录网站,反之亦然(在某些限制内,但您需要探索这些限制)。


仅限游戏?

您说得对,大多数与应用程序相关的 Facebook 文档都提到了游戏。 确实,一个很好的起点是https://developers.facebook.com/docs/games/gamesonfacebook,现在可以帮助您获得 Canvas 应用程序。

但它不一定是游戏 - 只要您使用 API,任何东西都可以工作。当您提到 PHP 时,请查看 https://developers.facebook.com/docs/php/howto/example_access_token_from_canvas - 没有提到游戏,而是您如何从 PHP 中的 iFrame 获取信息。 (还有很多阅读要做!)。


阅读通知

点击通知时,Facebook 会在 URL 中添加参数。其中一些是由通知决定的(参见https://developers.facebook.com/docs/games/services/appnotifications),其他的将帮助您获取有关用户的信息(https://developers.facebook.com/docs/reference/login/signed-requesthttps://developers.facebook.com/docs/php/SignedRequest/5.0.0)。

因此,请在服务器端使用此信息来确定用户是谁以及您希望如何处理该用户。但是,一旦您进入 Facebook 生态系统,您想为用户提供什么样的体验取决于您自己。

【讨论】:

  • 这让我对 fb 文档有了新的认识,谢谢。问你:我可以创建多个 PHP 脚本,这些脚本将在我的 POST 到 fb/notification 中作为 href 参数,每个脚本用于不同的通知类型。这些脚本应该使用 FB JS 登录或 PHP SDK 画布登录帮助程序来获取访问令牌,并确保这是应该阅读通知的用户。例如,如果通知是“新消息”,那么我会显示此消息并允许发回消息而无需访问我的网站。希望我没有错!然而……
  • .. 我有义务提供 Secure Canvas URL。究竟什么是安全画布 URL。它就像我的画布应用程序的主页?这只是指向我主页的 URL,还是我应该为此创建不同的脚本?我是否需要在我的画布应用程序中提供整个网站内容? @CBroe 在另一个问题上说“再次,不允许使用画布仅将它们重定向到 Facebook 之外”。所以画布应用程序和我的网站应该有完整的功能?
  • 由于 Facebook 在 https 上运行,所有 iFrame 也必须使用 https 传递,否则浏览器会发出安全警告。虽然他们允许您运行 http 进行测试,但没有 https 就无法发布 - 但它应该与您使用 http 休息/编写相同。不,您不需要在画布中提供所有内容。您可以(这很常见)在画布中提供部分,在网站或移动应用程序上提供部分(尽管根据个人经验,画布和页面选项卡的使用越来越少)。但是,正如您所指出的,您必须提供一些有意义的功能,而不仅仅是重定向。
  • 例如,在移动设备上玩游戏,但转到 Facebook 选项卡以查看有关您的游戏的扩展统计信息、进行边赛等,这些都增加了移动体验。两者都使用相同的应用程序、相同的数据库和相同的登录名,但它在功能上拆分到最合适的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多