Twitter授权

时间:2016-07-02 11:26:27

标签: java rest twitter oauth unirest

我试图在Twitter上尝试使用unirest(我必须使用它),但是我没有从其余的错误中得到很好的反馈。

这是我的要求:

    HttpResponse request = Unirest.post( "https://api.twitter.com/1.1/account/settings.json" )
            .header( "Authorization",
                    "oauth_consumer_key=\"XXX\"," +
                            "oauth_token=\"XXX\"," +
                            "oauth_signature=\"XXX\"" +
                            "oauth_nonce=\"XXX\"," +
                            "oauth_signature_method=\"HMAC-SHA1\"," +
                            "oauth_timestamp=\"1467448738\"," +
                            "oauth_version=\"1.0\","
            )
            .header( "Content-Type", "application/json" )
            .header( "accept", "application/json" )
            .header( "X-Target-URI", "https://api.twitter.com" )
            .header( "Host", "api.twitter.com" )
            .header( "Connection", "Keep-Alive" ).asJson();

我正在接受

{"errors":[{"code":215,"message":"Bad Authentication data."}]}

使用此页面可以轻松执行https:// apigee.com/console/twitter但我明白了 oauth_timestamp,oauth_nonce,oauth_signature每次都是随机生成的。 (我必须以某种方式生成它们吗?)

http:// quonos.nl/oauthTester/ - 这个网站帮助我检查oauth签名

这个https:// dev.twitter.com/oauth/tools/signature-generator/<+my id&gt;为我生成签名基本字符串,授权标题,cURL命令

我还有来自https:// apps.twitter.com/app/的密钥     消费者密钥(API密钥)     消费者秘密(API秘密)     访问令牌     访问令牌秘密 (以及访问读取,写入和直接消息)

但每次我都会收到错误。

我的代码怎么了?我错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

oauth_timestamp不是随机生成的,而是当前时间。例如上面的示例是(使用http://www.onlineconversion.com/unix_time.htm验证)

Sat, 02 Jul 2016 08:38:58 GMT

oauth_nonce是随机的,如下面的帮助页面所述,例如: “base64编码32字节的随机数据”。

oauth_signature是根据您的请求参数计算的,有时会发布正文,客户端令牌/秘密等。

https://dev.twitter.com/oauth/overview/authorizing-requests https://dev.twitter.com/oauth/overview/creating-signatures

这是用于签署请求的一些示例代码

https://github.com/yschimke/oksocial/blob/master/src/main/java/com/baulsupp/oksocial/services/twitter/Signature.java