Hybridauth - PHP - Facebook 返回了无效的用户 ID

Posted

技术标签:

【中文标题】Hybridauth - PHP - Facebook 返回了无效的用户 ID【英文标题】:Hybridauth - PHP - Facebook returned an invalid user id 【发布时间】:2012-12-13 15:42:55 【问题描述】:

好吧,自 2 周前以来,我的 hybridauth 工作并使用 facebook 正确登录,我没有任何更改,今天早上我发现它无法正常工作。我试图将 facebook 应用程序(id 和密钥)切换到另一个以前也可以工作的应用程序,但仍然发生相同的情况。我还尝试运行 hybridauth 附带的示例,但它们都没有工作,所以我知道这不是我身边的配置,也不是来自 facebook 应用程序配置。

这是我尝试登录时告诉我的信息:

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

原始错误信息:验证失败! Facebook 返回了一个无效的用户 ID。

可能发生与我的服务器相关的事情吗? Facebook 在过去 24 小时内是否对其 API 进行了任何更改? 有人做过类似的实验吗?

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

这里是 GitHub 的链接,您可以在其中查看解决此问题的更改:

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

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

【问题讨论】:

你找到解决这个问题的方法了吗?我也遇到了同样的问题 有人找到解决方案吗?我们的一些用户遇到了这个问题。 经过一番研究,我得到了它的工作:)确保您的 FB 应用程序未处于“沙盒”模式。 Facebook 中的应用配置应关闭沙箱。 另外,我必须确保“嵌入式浏览器 OAuth 登录”已禁用。 【参考方案1】:

我遇到了类似的问题,我相信在我的情况下我找到了解决方案,也许它会帮助其他人。 (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 的超时时间,瞧!又开始工作了。

许多帖子中的根本问题是 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',

【讨论】:

【参考方案2】:

也许您的配置发送的是 KEY 而不是 ID:

Facebook 示例:

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

推特示例:

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

【讨论】:

【参考方案3】:

这是由于facebook graph api的api更改,您可以下载最新版本的Hybridauth for facebook https://github.com/hybridauth/hybridauth,目前第三方api无法用于facebook,因此您需要下载facebook sdk并将其放在第三方目录下,你可以从https://github.com/facebook/php-graph-sdk下载。

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

【讨论】:

以上是关于Hybridauth - PHP - Facebook 返回了无效的用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

PHP HybridAuth 社交登录根本不起作用。重定向到 ?hauth.start=Facebook&hauth.time

HybridAuth 不适用于 ajax

HybridAuth 身份验证 cookie

HybridAuth:如何为现有用户请求额外权限?

了解使用 HybridAuth 时的 base_url 参数

您无法直接访问此页面 - HybridAuth 社交登录