直接消息中的媒体和推文中共享的媒体有什么区别?
如果图像发布到 Twitter 时间线,任何互联网用户都可以看到它。例如,在此推文上,任何人都可以使用该图像,无论他们是否登录 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,他们将能够下载图像。例如,如果您编写了一个网络应用程序并且浏览器已经包含 Twitter cookie 等。
如果不是 - 或者您正在使用应用程序 - 您将需要代表用户签署请求。
对于 REST - 您需要随请求一起发送 OAuth 标头。Twitter 文档中有示例代码
额外的标题看起来像
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,我建议您看看 Twidere 是如何做到的。