为什么在WordPress插件中进行身份验证时,Facebook后端会返回0作为用户id


Why does the Facebook backend return 0 as the user id when authenticating from within a WordPress plugin?

感谢阅读!以下是我要做的。

我正在编写一个WordPress插件,它利用了Facebook提供的PHP SDK(最新版本3.1.1)。我的应用程序在Facebook上注册为网站,因为它实际上就像一个网站,即使它嵌入了WordPress中。

这个SDK附带了一个非常简单易懂的example.php。如果我把这个文件放在服务器上,它就会正常工作。我确保证书文件和SDK文件位于正确的位置,并且可以由脚本访问。

然而,如果我在WordPress插件中(从插件的管理页面)做同样的事情,Facebook后端不会返回用户id,而是总是返回0。FB返回0的问题很常见,但原因似乎各不相同。

我不得不提的是,这种行为并不总是这样。就在几周前。我怀疑FB后端以某种方式检查间接的API调用,并且从WordPress插件中调用它似乎在某种程度上违反了FB的授权规则(CSRF问题?)。但我不确定。

有人知道这里发生了什么吗?

以下是我的猜测:

Facebook将无法访问你的WordPress博客的后端,因为它需要身份验证。因此,example.php代码在WordPress管理面板中是不可见的。

当在服务器上提供原始服务时,没有这样的访问控制,Facebook可以访问该页面。

如果是这样的话,我的建议是把它变成一个非管理插件,也许可以使用WP_rewrite类添加一个重写规则。