我正在使用自定义 Open Graph 操作和对象开发我的第一个 Facebook 应用程序,并且我试图避免在每次代码更改后都需要进行部署(在这种情况下,部署到我的自动设置的 heroku 帐户)。
当我准备测试我的第一个自定义操作的发布时,问题就开始了。我试图根据我的 Facebook 应用程序的开发版本设置所有内容,除了我的“对象”页面,据我所知,该页面需要公开访问(以抓取 OG 元标签)。
我为我的自定义对象创建了一个测试页,将自动生成的 OG 元标记集复制到其中(引用我的 app_id 的开发版本,但使用我的应用程序的产品版本的公共 URL 为 og: url)然后,我在该测试页面上使用了 facebook“lint”工具,我想这并不奇怪,它抱怨该公共域对相关应用程序(我的 facebook 应用程序的开发版本)无效。
Object Base Domain Not Allowed: Object at URL
'http://foo.herokuapp.com/testEventPage.php' of type 'foo:product' is
invalid because the domain 'foo.herokuapp.com' is not allowed
for the specified application id '(the app_id)'.
然后,我了解了如何使用 Tunnlr 从公共站点端口转发到我的本地环境,并着手进行设置。
我将 MAMP 与虚拟主机配置一起使用,如下所示:
<VirtualHost *:8888>
DocumentRoot "(the relevant docroot)"
ServerName foo.local
SetEnv FACEBOOK_APP_ID (my dev FB app-id)
SetEnv FACEBOOK_SECRET (my dev FB secret)
</VirtualHost>
我正在使用 tunnlr,它的 cmdln 指向端口 8888。
使用 Tunnlr 提供的公共 URL,我成功访问了我的本地页面,但是,当我尝试使用 Facebook 的示例 PHP 代码附带的页面上的“登录”按钮时,会弹出登录对话框,但是立即消失,尽管直接在本地访问它时它工作正常。
这可能与cookie有关吗?与端口转发和 cookie 有关吗?
有没有更好的方法来开发 Facebook 应用程序,特别是那些涉及自定义 Open Graph 操作和对象的应用程序?
编辑:就像医生说的那样,如果你这样移动你的手臂时疼,不要那样移动你的手臂!换句话说,通过 Facebook-Canvas URL 访问 Tunnlr-URL,它将嵌入页面的当前登录发布到您自己的页面;并且,作为用户(可选测试用户),不要使用示例代码的登录按钮;而是使用嵌入页面的登录功能。所以,我已经回答了我自己的问题。