HybridAuth Twitter Failure 401
问题
我能够通过 HybridAuth 库连接到 Twitter,但它停止了工作。发布到 Twitter 帐户也很实用。
我已经尝试过什么
重置我的 Twitter 应用访问令牌。
创建一个全新的 Twitter 应用程序。
使用 HybridAuth 调试模式进行故障排除。
错误信息
"身份验证失败。用户已取消身份验证或提供商拒绝连接。
原始错误消息:身份验证失败!推特返回错误。 401 未经授权。"
我的研究
这似乎归因于缺少密钥和秘密,但我在 Twitter 配置文件中设置了这些。
密码
1 2 3 4 5 6 7 8 | $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 方法正在抛出异常。在它要求我允许通过应用程序访问之前,现在它会抛出错误。
如果您需要更多信息,请告诉我。
瑞克
以下是发生的事情以及您应该知道的事情:
我是如何解决的:
我使用 USNO 主时钟将我的服务器时间设置为正确的时间。恰好偏移了 15 分钟多一点。
这只是我的情况的另一种解决方案:
在 Twitter App 中设置"回调 URL"(如果你在本地测试,可以使用示例 URL)。
他们没有将此指定为必填字段,并且允许使用 HybridAuth 请求中的 URL 覆盖此 URL。
如果其他人也无法编辑他们的服务器时间,有一个解决方法。最基本但可能不是最干净的方法就是转到 Hybrid/thirdparty/OAuth/OAuth.php 找到 generate_timestamp() 函数,并将服务器和 gtm 0 之间的时间差异添加到 time() 中。像这样:
1 2 | private static function generate_timestamp() { return time() + 7200; |
}
在我的情况下,我的服务器是 gtm-2,所以我必须在 time() 函数中添加 2 小时(以秒为单位)才能使其工作。