自 2 周前以来,我一直在使用 hybridauth 并使用 facebook 正确登录,我没有做任何更改,今天早上我发现它无法正常工作。我试图将 facebook 应用程序(id 和 key )切换到另一个之前也能正常工作的应用程序,但仍然发生同样的事情。我还尝试运行 hybridauth 附带的示例,但它们都不起作用,所以我知道这不是我这边的配置,也不是 facebook 应用程序配置。
这是我尝试登录时告诉我的内容:
错误! 认证失败。用户已取消身份验证或提供商拒绝连接。
原始错误信息:认证失败! Facebook 返回了无效的用户 ID。
- 是否会发生与我的服务器相关的事情?
- Facebook 在过去 24 小时内是否对其 API 进行了任何更改?
- 有人试验过类似的东西吗?
更新: 我从 1 周前就开始工作了,为了让它工作,我发现其他人之前(不到 1 个月前)也有同样的问题,他们在 17 天前通过更新 Facebook PHP SDK 修复了它。
这是 GitHub 的链接,您可以在其中查看解决此问题的更改:
https://github.com/F21/hybridauth/commit/3b115ee3abb5afbf44c37082e63aa8b056bf550c
有了这个,我设法让一切正常工作,但现在即使进行了这些更改(工作一周后)也发生了同样的错误。
最佳答案
我遇到了类似的问题,我相信在我的情况下我找到了解决方案,也许它会对其他人有所帮助。 (CURLOPT_CONNECTTIMEOUT)
HybridAuth 错误(无效用户)非常普遍,基本上它会查看 curl 是否返回某些内容,如果没有返回该错误,但真正的原因在错误消息中不可见。
我最后做的是下载 facebook php sdk 并使用默认示例 https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php
(更改了我的应用程序的 key )
那时我能够看到以前使用 HybridAuth 时没有显示的新错误消息
PHP fatal error :未捕获的 CurlException:6:名称查找超时
这让我看到了这篇文章 http://milkcodes.blogspot.com/2010/12/php-fatal-error-uncaught-curlexception.html谈到在我所做的 base_facebook.php 中增加 CURL 的超时时间,瞧!又开始工作了。
许多帖子中的根本问题是 CURL 连接是造成这些问题(https、超时、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',
关于php - Hybridauth - PHP - Facebook 返回无效的用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068425/