curl ,twitter oauth 问题

标签 curl twitter oauth

有没有人看到以下 Curl 调用/如何构建 Oauth 请求的问题?
(我正在尝试获得正确的设置请求,以便完成我的应用程序)
所以我正在调用以下 CURL 调用:

C:\>curl -v -k --data-urlencode "status=Testing2" -H "Authorization: OAuth realm='', oauth_nonce=1276107867blah, oauth_timestamp=1276107867, oauth_consumer_key=yJDLH7BDdVi1OKIINSV7Q, oauth_signature_method=HMAC-SHA1, oauth_version=1.0, oauth_signature=NWU4MDdlNjk0OGIxYWQ1YTkyNmU5YjU1NGYyOTczMmU5ZDg5

YWNkNA==, 状态=Testing2 "http://twitter.com/statuses/update.xml?status=Testing2

我收到了这个:
* About to connect() to twitter.com port 80 (#0)
*   Trying 168.143.162.68... connected
* Connected to twitter.com (168.143.162.68) port 80 (#0)
> POST /statuses/update.xml?status=Testing2 HTTP/1.1
> User-Agent: curl/7.20.1 (i386-pc-win32) libcurl/7.20.1 OpenSSL/0.9.8n zlib/1.2.5 libidn/1.18 libssh2/1.2.5
> Host: twitter.com
> Accept: */*
> Authorization: OAuth realm='', oauth_nonce=1276106370blah, oauth_timestamp=1276106370, oauth_consumer_key=yJDLH7BDdVi1OKIINSV7Q, oauth_signature_method=HMAC-SHA1, oauth_version=1.0, oauth_signature=MjQzNDA1MGU4NGRmMWVjMzUwZmQ4YzE5NzMzY2I1ZDJlOTRkNmQ2Zg==, staus=Testing2
> Content-Length: 15
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 401 Unauthorized
< Date: Wed, 09 Jun 2010 18:00:22 GMT
< Server: hi
< Status: 401 Unauthorized
< WWW-Authenticate: Basic realm="Twitter API"
< X-Runtime: 0.00548
< Content-Type: application/xml; charset=utf-8
< Content-Length: 164
< Cache-Control: no-cache, max-age=1800
< Set-Cookie: k=209.234.229.21.1276106420885412; path=/; expires=Wed, 16-Jun-10 18:00:20 GMT; domain=.twitter.com
< Set-Cookie: guest_id=127610642214871948; path=/; expires=Fri, 09 Jul 2010 18:00:22 GMT
< Set-Cookie: _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCIm33h0pAToHaWQiJTkyMjllODE0NTdiYWE1%250AMWU1MzBmNjgwMTFiMDhkYjdlIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--8ebb3c62d461d28f8fda7b8adab642af66969f7e; domain=.twitter.com; path=/
< Expires: Wed, 09 Jun 2010 18:30:20 GMT
< Vary: Accept-Encoding
< Connection: close
<
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/statuses/update.xml?status=Testing2</request>
  <error>Could not authenticate with OAuth.</error>
</hash>
* Closing connection #0

我的参数设置如下:
var parameters = [encodeURIComponent("status="+status),encodeURIComponent("oauth_token="+ac_token),encodeURIComponent("oauth_consumer_key="+"yJDLH7BDdVi1OKIINSV7Q"),encodeURIComponent("oauth_nonce="+nonce,"oauth_signature_method=HMAC-SHA1"),encodeURIComponent("oauth_timestamp="+timestamp),encodeURIComponent("oauth_version=1.0")]

var join = parameters.join("&");
var eparamjoin =encodeURIComponent(join);

关键是这样的:
var key=con_secret+"&"+ac_secret;

签名基本字符串是:
var signaturebs = "POST&"+encodeURIComponent(url)+"&"+eparamjoin;

给这个:
POST&http%3A%2F%2Ftwitter.com%2Fstatuses%2Fupdate.xml&status%253DTesting2%26oauth_token%253D142715285-yi2ch324S3zfyKyJby6WDUZOhCsiQuKNUtc3nAGe%26oauth_consumer_key%253DyJDLH7BDdVi1OKIINSV7Q%26oauth_nonce%253D1276107867blah%26oauth_timestamp%253D1276107867%26oauth_version%253D1.0

和签名是这样构建的:
var hmac = Crypto.HMAC(Crypto.SHA1, signaturebs,key );

var signature=Base64.encode(hmac);

制作签名:
NWU4MDdlNjk0OGIxYWQ1YTkyNmU5YjU1NGYyOTczMmU5ZDg5YWNkNA==

任何帮助将不胜感激,谢谢!

最佳答案

它可能像 URL 问题一样简单。

您正在调用:http://twitter.com/statuses/update.xml?status=Testing2

API 文档建议:http://api.twitter.com/1/statuses/update.xml?status=Testing2

他们前段时间实现了新的 URL 路径,但我不知道他们何时或是否关闭了旧的。

关于 curl ,twitter oauth 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008723/

相关文章:

Python 推特 Json

oauth - Google OAuth 2.0 增量授权不起作用

javascript - 将 json api curl 从 javascript 重写为 php

适用于 .NET 应用程序的 Twitter Api

python - curl vs python "requests"访问 API 时

angularjs - 如何在 Android 的 AngularJS/Ionic 应用程序中添加 twitter feed

Spring OAuth2 ClientId 作为密码授予类型的用户名传入

python - Python 中的 FIWARE OAuth2 身份验证

php - 通过 PHP cURL 将文档添加到 Apache Solr

PHP Curl 不适用于端口 8080