使用Rest API通过URL获取媒体

时间:2015-10-27 09:40:02

标签: twitter twitter-oauth media-url

我想在状态中检索媒体,但正如我在文档中所读到的那样:

  

对于直接消息中的媒体,必须通过以下方式访问media_url_https   经过身份验证的twitter.com会话或通过签署请求   用户使用OAuth 1.0A访问令牌。不可能直接   将这些图像嵌入网页

现在我的问题是,如何使用Java API执行此类请求?或者使用仅限应用程序身份验证使用RestAPI的正确请求是什么?

另一个问题:推文中直接消息和媒体中媒体的区别是什么?如何才能看到代表状态的json对象内部的差异?

1 个答案:

答案 0 :(得分:0)

  

推文中直接消息和媒体中媒体的区别是什么?

如果图像发布到Twitter时间轴,任何互联网用户都可以看到它。例如,on this Tweet图像可供任何人使用,无论他们是否已登录Twitter。见https://pbs.twimg.com/media/CSGwFynWoAA2GGG.jpg

如果图像被发布到直接消息中,则发送者和接收者只能看到图像。为了强制执行该操作,用户必须登录其Twitter帐户,或通过应用程序发送签名请求。

例如,这张图片只能由我和我看到。我发给https://ton.twitter.com/i/ton/data/dm/639737026624024579/639737026682691584/tg-4St-1.jpg

的人
  

如何在json对象中看到代表状态的区别?

唯一的区别(除了用于获取数据的API调用之外)是媒体的URl。在DM中,它以ton.例如

开头

media_url": "https://ton.twitter.com/1.1/ton/data/dm/......

在正常的推文中,它看起来就像是。

"media_url": "http://pbs.twimg.com/media/.......

  

现在我的问题是,如何使用Java API执行此类请求?或者使用仅限应用程序身份验证使用RestAPI的正确请求是什么?

如果用户已登录Twitter,他们将能够下载图像。例如,如果您已经编写了一个Web应用程序,并且浏览器已经包含了Twitter cookie等。

如果没有 - 或者您正在使用应用 - 您需要代表用户签署请求。

对于REST - 您需要使用请求发送OAuth标头。有example code in the Twitter documentation

额外的标题看起来像

Authorization: OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318622958", oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", oauth_version="1.0"

对于Java,我建议你take a look at how Twidere does it