Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Facebook后端在WordPress插件中进行身份验证时返回0作为用户id?_Php_Facebook_Wordpress_Plugins_Oauth - Fatal编程技术网

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

Php 为什么Facebook后端在WordPress插件中进行身份验证时返回0作为用户id?,php,facebook,wordpress,plugins,oauth,Php,Facebook,Wordpress,Plugins,Oauth,谢谢你的阅读!这就是我要做的 我正在编写一个WordPress插件,它利用了Facebook提供的PHP SDK(最新版本3.1.1)。我的应用程序在Facebook注册为一个网站,因为它实际上就像一个网站,即使它嵌入了WordPress 此SDK附带了一个非常简单易懂的example.php。如果我把这个文件放在我的服务器上,它就会正常工作。我确保证书文件和SDK文件位于正确的位置,并且脚本可以访问它们 但是,如果我在WordPress插件中(从插件的管理页面)执行完全相同的操作,Facebo

谢谢你的阅读!这就是我要做的

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

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

但是,如果我在WordPress插件中(从插件的管理页面)执行完全相同的操作,Facebook后端将不会返回用户id,而是始终返回0。FB返回0的问题很常见,但原因似乎有很大不同

我必须指出,这种行为并不总是这样。几周前才开始。我怀疑FB后端以某种方式检查间接API调用,并且从WordPress插件中调用它似乎在某种程度上违反了FBs身份验证规则(CSRF问题?)。但我不确定

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

我猜:

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

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


如果是这种情况,我的建议是将其转换为非管理员插件,也许可以使用添加重写规则。

感谢您的即时回答!让我想知道的是,如果是这样的话,为什么它在两周前就起作用了?当从作为WP插件一部分的PHP脚本中调用时,FB真的需要访问WP后端吗?你能从技术上给我解释一下吗?我希望我能像你说的那样解决这个问题,但我不能把它变成一个非管理员插件,因为这是插件的重点,它是为博客所有者提供的。当你使用用户名登录并通过时,WordPress会删除一些cookies(),以便它将你识别为登录用户。如果WordPress只允许任何机器人访问您的后端,任何人都可以更改或破坏您的安装。Facebook没有经过身份验证,因此当它请求您的管理页面时没有cookies,所以WP会抛出一个错误。当您提供example.php raw时,WordPress根本没有参与其中——Facebook直接与您的服务器进行了交谈。感谢您的详细解释。在我看来,现在FB需要请求管理页面作为身份验证过程的一部分似乎更合理。我仍然想知道为什么它最初起作用。它应该总是产生错误,但没有。我将尝试用URL重写来解决这个问题。谢谢又发生了一件奇怪的事。我将参数“redirect_uri”添加到配置数组中,我用它初始化我的Facebook实例,奇怪的是,身份验证再次完美地工作在WordPress插件的管理页面中。