使用Curl和Windows命令行将照片发布到Twitter

使用Curl和Windows命令行将照片发布到Twitter,curl,twitter,command-line,twitter-oauth,Curl,Twitter,Command Line,Twitter Oauth,我使用Curl通过Windows命令行发布到twitterapi。我已经生成了oAuth标题,可以使用以下工具发布没有照片的推文: curl -k -X POST "https://api.twitter.com/1.1/statuses/update.json" -d "status=Test" -H "Authorization: OAuth oauth_consumer_key=\"xxxxxxxxxxxxxxxxxxx\", oauth_nonce=\"xxxxxxxxxxxxxxxxx

我使用Curl通过Windows命令行发布到twitterapi。我已经生成了oAuth标题,可以使用以下工具发布没有照片的推文:

curl -k -X POST "https://api.twitter.com/1.1/statuses/update.json" -d "status=Test" -H "Authorization: OAuth oauth_consumer_key=\"xxxxxxxxxxxxxxxxxxx\", oauth_nonce=\"xxxxxxxxxxxxxxxxxxxxxxx\", oauth_signature=\"xxxxxxxxxxxxxxxxxxx\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"xxxxxxxxxx\", oauth_token=\"xxxxxxxxxxxxxxxxx\", oauth_version=\"1.0\""
这可以很好地发布状态,但我似乎不知道如何使用statuses/update_with_媒体端点发布具有状态的照片。我知道这个端点被折旧了,但我想暂时使用它

我尝试了以下几种变体:

curl  -k -X POST "https://api.twitter.com/1.1/statuses/update_with_media.json" -F \"[media]=@photo.jpg\" -F \"status=Test\" -H "Authorization: OAuth oauth_consumer_key=\"xxxxxxxxxx\", oauth_nonce=\"xxxxxxxxxxxxxxx\", oauth_signature=\"xxxxxxxxxxxxxxxx\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"xxxxxxx\", oauth_token=\"248911615-xxxxxxxxxxx\", oauth_version=\"1.0\""
没有运气。我总是得到一个{代码:195,消息:缺少或无效的url参数。}错误或{代码:32,消息:无法对您进行身份验证。}

我似乎无法找出正确的语法和签名来发布状态和照片


如果较容易的话,我很乐意使用较新的媒体/上载方法,但我也无法使其工作。

我找到了使较新的媒体/上载端点工作的语法和签名:

curl-k-X POST-F media=@file.jpg-H授权:OAuth OAuth_consumer_key=\xxxxxxxxxxxxx\,OAuth_nonce=\xxxxxxxxxxxxx\,OAuth_签名=\xxxxxxxxxx\,OAuth_签名\方法=\HMAC-SHA1\,OAuth_时间戳=\xxxxxx\,OAuth_令牌=\xxxxxxxxxxxxxx\,OAuth_版本=\1.0\


密钥不包括媒体文件作为签名的一部分

我强烈建议您不要使用update_with_media,因为它已经过时了。这里有一些示例和演示使用twurl的媒体/上传方法。使用curl,在包含媒体时,您可能无法正确生成签名。不幸的是,我无法使用twurl,因为我无法安装Ruby。我需要它从shell命令通过curl.exe运行。但我将检查这些示例,看看是否可以得到任何提示。