PHP - Facebook返回一个无效的用户id


Hybridauth - PHP - Facebook returned an invalid user id

好吧,我有hybridauth工作和正确登录使用facebook自2周前,我没有任何变化,今天早上我发现它不工作。我试图将facebook应用程序(id和密钥)切换到另一个之前也在工作的应用程序,但仍然发生相同的情况。我也试着运行带有hybridauth的示例,它们也不起作用,所以我知道不是从我这边配置,也不是从facebook应用程序配置。

当我尝试登录时,这是告诉我的:

错误!认证失败。用户已取消身份验证或提供者拒绝连接。

原始错误信息: authentication failed!Facebook返回一个无效的用户id。

  • 可以发生每与我的服务器相关的事情?
  • 在过去的24小时内,facebook对他们的API做了任何改变吗?有人做过类似的实验吗?

更新:我有它的工作只是因为1周前,让它工作,我发现其他人有同样的问题之前(不到1个月前),他们修复了它17天前通过更新Facebook PHP SDK。

这里是GitHub的链接,在这里你可以看到解决这个问题的变化:

https://github.com/F21/hybridauth/commit/3b115ee3abb5afbf44c37082e63aa8b056bf550c

有了这个,我设法让一切工作,但现在发生同样的错误,即使有这些变化(经过一周的工作)。

我有一个类似的问题,我相信在我的情况下,我找到了解决方案,也许它会帮助别人。(CURLOPT_CONNECTTIMEOUT)

HybridAuth error (invalid user)是非常通用的,基本上它会查看curl是否返回一些东西,如果没有,则给出该错误,但真正的原因在错误消息中不可见。

我最终做的是下载facebook php sdk并使用默认示例https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php

(更改了我的应用程序的密钥)

在这一点上,我能够看到新的错误信息,以前使用HybridAuth时没有显示

PHP致命错误:Uncaught CurlException: 6: name lookup timed out

这让我想到了这篇文章http://milkcodes.blogspot.com/2010/12/php-fatal-error-uncaught-curlexception.html,这篇文章讨论了如何在base_facebook.php中增加CURL超时,我做到了,瞧!

许多帖子的潜在问题是CURL连接主要负责这些问题(https, timeout, nslookup等)

快速找出它的一个好方法是保持一个测试脚本与fb sdk方便调试。

在base_facebook.php第133行左右

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 30,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.2',

可能您的配置发送的是KEY而不是ID:

Facebook的例子:

"keys"    => array ( "id" => "PUT_YOURS_HERE", "secret" => "PUT_YOURS_HERE" )
Twitter例子:

"keys"    => array ( "key" => "PUT_YOURS_HERE", "secret" => "PUT_YOURS_HERE" )

由于facebook graph api的api变化,您可以下载最新版本的facebook Hybridauth https://github.com/hybridauth/hybridauth,目前facebook不提供第三方api,因此您需要下载facebook sdk并将其放在第三方目录下,您可以从https://github.com/facebook/php-graph-sdk下载。

下载后,您可能需要配置facebook sdk自动加载文件