我正在开始我的第一个Facebook应用程序,在Heroku上托管。我已经在Heroku上设置了一个用于生产的应用程序,以及一个在我自己的机器上本地运行的独立应用程序。目前,该应用程序(具有非常少的功能)在localhost上运行就好了。但我不明白该应用程序是否应该像具有Facebook功能的localhost上的典型画布应用程序一样运行。例如,请求对话框是否在本地的画布应用程序中运行。我可以在开发时在本地使用该功能吗?如果是这样,我需要采取哪些步骤来实现这一目标?
答案 0 :(得分:4)
差异
您将看到的独立网站和画布应用(或页面标签)之间的唯一真正区别是,您在加载页面时不会传入signed_request
。
应用程序对话框仍然有效,但是在弹出窗口而不是直接在页面上。此外,您可以像在“使用Facebook登录的网站”(或移动设备)下的Facebook应用设置中设置本地开发网址(例如http://localhost:5000
)一样登录用户幅)。
还有一些你无法在服务器上测试的东西,比如facebook发送请求到你的网站通知更新的实时更新。
可能还有其他一些事情,但这是我现在能想到的。
在本地工作
所以,我通常做的是在本地开发它。要管理缺少signed_request
,我只提供一个存根,或者我不指望它存在,所以我的应用程序也可以用完facebook。
对于登录方法,我倾向于只依赖于JS SDK,因为大多数服务器端通过画布应用程序登录将依赖于signed_request
- 并且enaway,我找到了UX通过JS SDK更好地登录。
然后,我只设置了两个FB应用程序,一个分段和一个用于发布。登台应用程序指向我的本地网址,因此我的Facebook将允许从它进行连接。
此时,它应该大部分都可以正常使用!
答案 1 :(得分:2)
但我不明白该应用程序是否应该像具有Facebook功能的localhost上的典型画布应用程序一样运行
无论是在localhost还是在最终的生产服务器上,您的应用都应该采用相同的方式。
Facebook对话框(请求,消息..)应该像在实时服务器上一样显示在本地(开发)计算机上。在我的案例中,为了完成这项工作,我设置了一个辅助“脸谱app”,其中包含App Domains
,Site URL
和Canvas URL
的不同值。
这允许您从localhost运行您的应用程序。如果你的应用程序仅限画布,它将在iframe内运行(指向Site URL
),但会在Facebook中显示。
此外,如果您想要查看任何Facebook模式框而不是弹出窗口,请确保包含Facebook's JS API。
您应注意的唯一区别是,如果您通过FB API从localhost开发站点共享页面,Facebook将无法抓取您的站点并获取任何图标,图像或描述。< / p>