【问题标题】:Twitter Stream API - 401 UnauthorizedTwitter 流 API - 401 未经授权
【发布时间】:2014-01-02 20:31:30
【问题描述】:

我无法打开与 Twitter Stream API 的连接。无论我尝试什么,我都能得到的唯一回复是401 Unauthorized

我进行了各种测试,甚至使用了我在 GitHub 上找到的一些库。

即使在我的代码之外,使用 cURL,我也无法使其工作。

$oauth = array( 
    'oauth_consumer_key' => $this->m_oauth_consumer_key,
    'oauth_nonce' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_token' => $this->m_oauth_token,
    'oauth_timestamp' => time(),
    'oauth_version' => '1.0'
);

$base_info = $this->buildBaseString($this->url, 'GET', $oauth);
$composite_key = rawurlencode($this->m_oauth_consumer_secret) . '&' . rawurlencode($this->m_oauth_token_secret);
$oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
$oauth['oauth_signature'] = $oauth_signature;
$header = $this->buildAuthorizationHeader($oauth);

这是我构建 HTTP 请求标头和签名的代码。我尝试了很多不同的方法,都没有成功。

谁有任何可以帮助我的想法?

提前谢谢你。

【问题讨论】:

  • 希望我能提供帮助。现在我只能说加入俱乐部:(我认为我们需要更多代码。我不清楚,例如,你在调用什么 url。如果不是这样,请尝试使用 1.1 来反映新的 api,我是怕我帮不上忙,因为这对我也不起作用

标签: php twitter websocket stream


【解决方案1】:

我遇到了同样的问题。转到您的应用程序设置屏幕并将回调 URL 更改为 yoursite.com 之类的内容。我不知道为什么,但是一旦你改变了,你就不会再看到 401 错误了。

【讨论】:

    【解决方案2】:

    我今天尝试使用 node.js 访问 API,但遇到了同样的错误。我的 Windows 还没有更新我的时钟,所以我的本地计算机时间减少了一个小时(夏令时开关是今天)。 当我改变它时,它又开始工作了。 他们确实应该有一些比普通的 401 更好的错误消息。

    【讨论】:

    • 哇,我在安卓上也发生了同样的事情。哈哈。更详细的错误消息会有所帮助。他们正在使用流式 API,所以显然他们不在乎。
    【解决方案3】:

    如果您使用的是 Linux,请将您的时间与 NTP 服务器同步:

    $ sudo ntpdate ntp.org
    

    【讨论】:

    • 这个答案对我有帮助,我想它应该被接受。this link 将解释 401 的进一步原因,在我的情况下它是时间戳,与我的本地网络时间仅 5 分钟不同。更新后效果很好。
    猜你喜欢
    • 2016-12-24
    • 2012-06-24
    • 2012-04-08
    • 1970-01-01
    • 2015-09-15
    • 2013-06-15
    • 2014-04-03
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多