Escanear código QR Subir código QR
Tienda de dominios
Seleccione el tipo de plataforma anti-bloqueo para evitar que los enlaces sean interceptados
Seleccionar tipos de plataforma permitidos para acceso

新浪短链官方接口

做过短信营销或社群推广的人,多半都被长链接折磨过。一条挂满参数的网址动辄上百个字符,塞进短信里既占字数又影响观感,用户扫一眼就没有点开的欲望。新浪微博对外开放的短链接口,解决的就是这个痛点——它能把冗长的网址压缩成 t.cn/xxxx 这样的短链,发出去干净利索,点进来一步到位。



t.cn 这个域名在国内的辨识度相当高,用户平时刷微博天天见,天然带着一层信任感。除了省字符,短链还有不少实际价值:降低用户的记忆和输入成本,间接拉高点击率;在一些投放场景里,它还能遮住真实的落地页地址,降低域名被平台拦截的风险。所以不管是邮件推广、微信和 QQ 营销,还是自媒体引流、渠道效果追踪,这个接口的使用频率一直不低。



接口的官方文档托管在新浪微博开放平台,地址是 http://open.weibo.com/wiki/Short_url/shorten ,动手之前建议先通读一遍。请求方式上 GET 和 POST 都支持,返回格式给了 XML 和 JSON 两种选择,开发者按自己项目的解析习惯挑一个就行,不过大多数时候大家会直接要 JSON。

调用的门槛主要在授权环节。新浪走的是 OAuth 体系,access_token 是必填参数,没有它接口根本不理你。换句话说,得先在开放平台完成应用创建和用户授权流程,拿到有效的 token 之后才能正常发请求。好消息是,这个接口属于普通级别,不需要额外申请特殊权限,授权通过即可访问。需要注意的是它有调用频次限制,具体额度要看接口访问权限说明,批量刷请求之前最好先掂量一下自己的配额,免得触发限流被封。

请求参数其实很简单,核心的就两个:access_token 不用多说,是授权换来的令牌;url_long 是要缩短的长链接,注意必须先做 URL 编码,否则参数里的特殊字符会把请求搞乱。如果想一次转多条链接,可以带多个 url_long 参数,上限是 20 个,超过就得分批来。

下面给几个常见语言的调用示例,方便快速上手。需要提醒的是,这些代码只是示意,具体实现请以最新的接口文档为准。

PHP 的写法最省事,file_get_contents 一把梭:

$url = 'http://www.baidu.com';
$api_url = 'https://api.weibo.com/2/short_url/shorten.json?access_token=YOUR_ACCESS_TOKEN&url_long=' . urlencode($url);
$short_url = file_get_contents($api_url);
echo $short_url;




Java 这边稍微繁琐一点,要走 HttpURLConnection 的标准流程,手动读响应流:

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;

<img src="/uploads/20251015/23.png?t=1949839593" alt="" class="img-fluid" />

public class Main {
public static void main(String[] args) throws Exception {
String urlStr = "https://api.weibo.com/2/short_url/shorten.json?access_token=YOUR_ACCESS_TOKEN&url_long=" + java.net.URLEncoder.encode("http://www.baidu.com", "UTF-8");
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println(response.toString());
}
}


Python 则用 urllib 几行就能搞定,拿到响应后直接按 JSON 解析:

import urllib.request
import json

url_long = 'http://www.baidu.com'
api_url = f'https://api.weibo.com/2/short_url/shorten.json?access_token=YOUR_ACCESS_TOKEN&url_long={urllib.parse.quote(url_long)}'
response = urllib.request.urlopen(api_url)
data = json.loads(response.read().decode('utf-8'))
print(data)


实际接入时有几个坑值得提前留意。第一,access_token 有有效期,过期后请求会直接报错,生产环境里最好做好 token 的刷新和异常重试机制,别等接口挂了才发现是授权失效。第二,频次限制是真实存在的,短时间高频请求很容易被限制甚至封禁,批量场景建议自己加一层队列和速率控制。第三,开放平台的接口文档偶尔会更新,字段、地址或者限制规则都可能调整,养成定期回去看一眼文档的习惯,能省掉不少莫名其妙的问题。

总体来说,这个接口的逻辑并不复杂,授权、拼参数、发请求、解析返回,走完一遍基本就熟了。对需要在国内环境做推广的开发者来说,t.cn 短链的认知度和稳定性都是加分项,值得收进自己的工具箱。