嗯,我有两个星期前使用facebook工作和登录正确的hybridauth,我没有任何改变,今天早上我发现它无法正常工作。我试图将facebook应用程序(id和密钥)切换到另一个之前也在工作的应用程序,但仍然在发生相同的情况。我也尝试运行hybridauth附带的示例,但它们都没有工作,所以我知道不是来自我的配置,也不是来自facebook app配置。
当我尝试登录时,这就是告诉我的事情:
错误! 认证失败。用户已取消身份验证或提供商拒绝连接。
原始错误消息:身份验证失败! Facebook返回了一个荣耀的用户ID。
更新: 我让它在1周前工作,为了让它正常工作我发现其他人之前(不到1个月前)有相同的问题,他们通过更新Facebook PHP SDK修复了它17天前。
以下是GitHub的链接,您可以在其中查看修复此问题的更改:
https://github.com/F21/hybridauth/commit/3b115ee3abb5afbf44c37082e63aa8b056bf550c
有了这个,我设法让一切正常,但现在发生了同样的错误,即使这些变化(工作一周后)。
答案 0 :(得分:2)
我有类似的问题,我相信在我的情况下,我找到了解决方案,也许它会帮助其他人。 (CURLOPT_CONNECTTIMEOUT)
HybridAuth错误(无效用户)是非常通用的,基本上它看起来curl是否返回一些东西,如果没有,则给出该错误,但真正的原因在错误消息中不可见。
我最终做的是下载facebook php sdk并使用默认示例https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php
(将密钥更改为我的应用)
此时我能够看到使用HybridAuth
之前未显示的新错误消息PHP致命错误:未捕获的CurlException:6:名称查找超时
这指向了我这篇文章http://milkcodes.blogspot.com/2010/12/php-fatal-error-uncaught-curlexception.html,讨论了我在base_facebook.php中增加了CURL的超时,我和Voila!再次开始工作。
许多帖子中的基本问题是CURL连接主要负责这些问题(https,timeout,nslookup等)。
快速解决问题的一个好方法是使用fb sdk保存测试脚本以便进行调试。
在第133行的base_facebook.php中
public static $CURL_OPTS = array(
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-3.2',
答案 1 :(得分:0)
也许你的配置发送的是KEY而不是ID:
Facebook示例:
"keys" => array ( "id" => "PUT_YOURS_HERE", "secret" => "PUT_YOURS_HERE" )
Twitter示例:
"keys" => array ( "key" => "PUT_YOURS_HERE", "secret" => "PUT_YOURS_HERE" )
答案 2 :(得分:0)
这是由于facebook图api的api更改,你可以下载最新版的Hybridauth for facebook https://github.com/hybridauth/hybridauth,目前第三方api不适用于facebook所以你需要下载facebook sdk并将其置于第三方目录,您可以从https://github.com/facebook/php-graph-sdk下载。
下载后,您可能需要配置facebook sdk自动加载文件。