1

我想在 statuses 中检索媒体,但正如我在文档中看到的那样:

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

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

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

4

1 回答 1

0

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

如果图像发布到 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 是如何做到的

于 2015-10-27T10:36:50.980 回答