4

问题 我能够连接到 Twitter 的 HybridAuth 库,但它停止工作。发布到 Twitter 帐户也很实用。

我有什么尝试 重置我的 Twitter 应用访问令牌。创建一个全新的 Twitter 应用程序。使用 HybridAuth 调试模式进行故障排除。

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

原始错误消息:身份验证失败!推特返回错误。401 未经授权。”

我的研究 这似乎归因于缺少密钥和秘密,但我在 Twitter 配置文件中设置了这些。

编码

            $hybridauth = new Hybrid_Auth( $config );

            $adapter = $hybridauth->authenticate( "Twitter" );
            $hybridauth_session_data = $hybridauth->getSessionData();
            store_session_data($hybridauth_session_data);

            // get the user profile 
            $user_profile = $adapter->getUserProfile();

身份验证方法正在引发异常。在它要求我允许通过应用程序访问之前,现在它会抛出错误。

如果您需要更多信息,请告诉我。瑞克

4

3 回答 3

5

所以这里是发生了什么,你应该知道什么:

  1. Twitter 跟踪当前时间
  2. 如果用于身份验证的 API 请求来自声称其时间超出 Twitter 时间 15 分钟的服务器,它将失败并出现 401 错误。

我如何修复它:

我使用USNO Master Clock将我的服务器时间设置为正确的时间。它恰好偏移了15分钟多一点。

于 2013-02-06T16:37:00.763 回答
3

这只是我的另一种解决方案:

在 Twitter App 中设置“回调 URL”(如果您在本地测试,可以使用示例 URL)。

他们没有将此指定为必填字段,并且允许使用 HybridAuth 请求中的 URL 覆盖此 URL。

于 2015-10-13T08:45:08.833 回答
0

万一其他人也不能编辑他们的服务器时间,有一个解决方法。最基本但可能不是最干净的方法就是转到 Hybrid/thirdparty/OAuth/OAuth.php 找到 generate_timestamp() 函数,并将服务器和 gtm+0 之间的时间差异添加到 time() 中。像这样:

private static function generate_timestamp() {
return time() + 7200;

}

就我而言,我的服务器是 gtm-2,所以我必须在 time() 函数中添加 2 小时(以秒为单位)才能使其正常工作。

于 2015-03-16T04:49:40.463 回答