我想在状态中检索媒体,但正如我在文档中所读到的那样:
对于直接消息中的媒体,必须通过以下方式访问media_url_https 经过身份验证的twitter.com会话或通过签署请求 用户使用OAuth 1.0A访问令牌。不可能直接 将这些图像嵌入网页
现在我的问题是,如何使用Java API执行此类请求?或者使用仅限应用程序身份验证使用RestAPI的正确请求是什么?
另一个问题:推文中直接消息和媒体中媒体的区别是什么?如何才能看到代表状态的json对象内部的差异?
答案 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。