You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在支持外部分享的应用中获取Twitter分享链接的详情?

嘿,我来帮你搞定这个问题!你想要获取Twitter推文链接里的预览信息(标题、描述、图片),其实本质是抓取链接对应页面里的Open Graph(OG)标签和Twitter Cards标签——这正是Facebook、WhatsApp这类平台生成预览的核心依据。你之前用Jsoup的思路是对的,但可能没精准定位到正确的meta标签,我给你梳理下具体实现步骤:

1. 明确要抓取的核心Meta标签

Twitter的推文页面会输出标准的OG标签和专属的Twitter Cards标签,我们需要重点抓取这些:

  • 标题:og:title 或 twitter:title
  • 描述:og:description 或 twitter:description
  • 图片:og:image 或 twitter:image
2. 优化Jsoup的解析逻辑

你之前的代码只筛选了title和所有meta,范围太宽泛,应该精准定位带特定属性的meta标签。这里给你调整后的代码示例:

try {
    String tweetUrl = "https://twitter.com/manoramanews/status/958975623380156416?s=09";
    Document doc = Jsoup.connect(tweetUrl)
                        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") // 模拟浏览器请求,避免被Twitter拦截
                        .get();

    // 抓取标题,优先OG标签,为空则用Twitter标签
    String title = doc.select("meta[property=og:title]").attr("content");
    if (title.isEmpty()) {
        title = doc.select("meta[name=twitter:title]").attr("content");
    }
    // 抓取描述
    String description = doc.select("meta[property=og:description]").attr("content");
    if (description.isEmpty()) {
        description = doc.select("meta[name=twitter:description]").attr("content");
    }
    // 抓取图片链接
    String imageUrl = doc.select("meta[property=og:image]").attr("content");
    if (imageUrl.isEmpty()) {
        imageUrl = doc.select("meta[name=twitter:image]").attr("content");
    }

    Log.d("TweetPreview", "标题: " + title);
    Log.d("TweetPreview", "描述: " + description);
    Log.d("TweetPreview", "图片链接: " + imageUrl);

} catch (IOException e) {
    e.printStackTrace();
    Log.e("TweetPreview", "解析失败: " + e.getMessage());
}
3. 几个关键注意事项
  • 模拟浏览器请求:Twitter会拦截非浏览器的请求,所以一定要设置userAgent参数,模拟正常的浏览器访问,否则可能返回403错误或者空内容。
  • 异步执行网络请求:这段解析代码涉及网络操作,绝对不能在Android主线程执行,记得放到AsyncTask、Kotlin的Coroutine或者OkHttp的异步回调里,避免出现ANR(应用无响应)。
  • 添加网络权限:确保你的AndroidManifest.xml里已经添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
4. 特殊情况处理

如果推文本身没有图片,og:image或者twitter:image的内容会是空的,这时候你可以根据需求用Twitter的默认头像代替,或者留空处理。另外,如果是转发的推文,抓取到的OG标签内容会和你在Twitter上看到的转发预览一致,符合预期。

内容的提问来源于stack exchange,提问作者suja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:16:07