2

我正在启动我的第一个 Facebook 应用程序,托管在 Heroku 上。我在 Heroku 上设置了一个用于生产的应用程序,并在我自己的机器上本地运行了一个单独的应用程序用于开发。目前,该应用程序(功能很少)在 localhost 上运行得很好。但我不明白该应用程序是否应该能够像具有 Facebook 功能的本地主机上的典型画布应用程序一样运行。例如,请求对话框是否会在本地画布应用程序中运行。我应该能够在开发时在本地使用该功能吗?如果是这样,我需要采取哪些步骤才能使其正常工作?

4

2 回答 2

4

差异
您将看到的独立站点和画布应用程序(或页面选项卡)之间唯一真正的区别是signed_request加载页面时不会传入。

应用程序对话框仍然可以工作,但在弹出窗口中而不是直接在页面上。http://localhost:5000另外,如果您在 Facebook 应用程序设置中的“使用 Facebook 登录的网站”(或移动网络)下设置本地开发 URL(例如 ),您将能够像登录用户一样登录用户。

还有一些你无法在服务器上测试的东西,比如实时更新,Facebook 会向你的网站发送请求以通知更新。

可能还有一些其他的事情,但这是我现在能想到的。

在本地工作
所以,我通常做的是在本地开发它。为了管理丢失signed_request的,我只提供一个存根,或者我只是不指望它存在,所以我的应用程序也可以用完 facebook。

对于登录方法,我倾向于仅依赖 JS SDK,因为大多数通过画布应用程序进行的服务器端登录将依赖于signed_request- 并且 enaway,我发现通过 JS SDK 更好地进行 UX 登录。

然后,我只设置了两个 FB 应用程序,一个 staging 和一个用于发布。登台应用程序指向我的本地 URL,因此我的 Facebook 将允许从它进行连接。

在这一点上,它应该开箱即用!

于 2013-02-19T03:08:38.050 回答
2

但我不明白该应用程序是否应该能够像具有 Facebook 功能的本地主机上的典型画布应用程序一样运行

无论是在 localhost 还是在最终生产服务器上,您的应用程序的行为方式都应该相同。

Facebook 对话框(请求、消息..)应该像在实时服务器上一样显示在您的本地(开发)机器上。在我的情况下,为了完成这项工作,我设置了一个具有不同值的辅助“facebook 应用程序” App DomainsSite URLCanvas URL

这允许您从 localhost 运行您的应用程序。如果您的应用程序仅是画布,它将在 iframe 内运行(指向Site URL),但将显示在 Facebook 内。

此外,如果您想查看任何 Facebook 模式框而不是弹出窗口,请确保您包含Facebook 的 JS API 。

您应该注意到的唯一区别是,如果您通过 FB API 从您的 localhost 开发站点共享一个页面,Facebook 将无法抓取您的站点并在需要时获取任何图标、图像或描述。

于 2013-02-22T14:07:43.413 回答