HybridAuth推特失败401

时间:2013-01-30 00:10:55

标签: twitter oauth hybridauth

问题 我能够连接到Twitter的HybridAuth库,它停止工作。发布到Twitter帐户也是有效的。

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

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

原始错误消息:身份验证失败! Twitter返回了一个错误。 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();

authenticate方法抛出了异常。之前它会要求我允许通过应用程序访问,现在它会抛出错误。

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

3 个答案:

答案 0 :(得分:5)

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

  1. Twitter跟踪当前时间
  2. 如果要求进行身份验证的API请求来自声称时间超过Twitter时间15分钟的服务器,则会因401错误而失败。

  3. 我如何修复它:

    我使用USNO Master Clock将服务器时间设置为正确的时间。它碰巧只有超过15分钟的抵消。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

如果其他人也无法编辑他们的服务器时间,那么有一个解决方法。最基本也可能不是最干净的方法是去Hybrid / thirdparty / OAuth / OAuth.php找到generate_timestamp()函数,并在服务器和gtm + 0之间添加时间()。像这样:

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

}

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