线上推广中,链接往往是最不起眼、却直接影响转化的小细节。一个带大段参数的长地址,放在短信里既占字数,又容易让人当成垃圾信息;发在微信、QQ里还可能被折叠或拦截。新浪微博开放平台提供的短链接接口,可以把这类长链接压缩成 t.cn/xxxx 的形式,目前在短信营销、邮件推广、微信和QQ营销、自媒体推广以及渠道投放里都比较常见。它不只是让链接变短,还能降低投放成本、提高点击率;在某些场景下,也能帮助避开关键词限制、降低域名被拦截的风险,或者隐藏真实的落地地址。
接口的官方文档地址是 http://open.weibo.com/wiki/Short_url/shorten,请求方式同时支持 GET 和 POST。返回格式有 XML 和 JSON 两种,按开发环境选即可:如果后端用 PHP 或 Python,JSON 解析起来更方便;如果是 Java 或老系统,XML 也能直接用。
调用前需要先完成 OAuth 授权,拿到 access_token。这是接口的必填参数,也是判断调用者身份和权限的关键。授权完成后就能直接调用,接口本身属于普通权限,不需要额外申请。但官方对访问频次做了限制,尤其是批量生成短链时要注意请求间隔,过度调用可能会导致接口被封禁。如果业务上需要大量生成,最好在代码里做限速或排队处理。

实际请求时,核心参数只有两个:access_token 和 url_long。url_long 就是要缩短的原始长链接,必须先做 URL 编码再拼接到请求地址里;如果一次要缩短多个链接,可以传多个 url_long 参数,上限是 20 个。
以 Python 为例,最简调用逻辑大致如下:
import urllib.request
import urllib.parse
import json
url_long = 'http://www.baidu.com'
api_url = '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)
PHP 写起来更简单,用 file_get_contents 就能发起 GET 请求:

$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 的实现稍长一些,但思路一样:构造带 access_token 和 url_long 的 URL,用 HttpURLConnection 发起 GET 请求,再读取返回流即可。需要注意的是,长链接要先经过 URLEncoder.encode 处理,并指定 UTF-8 编码。核心代码大致如下:
String urlStr = "https://api.weibo.com/2/short_url/shorten.json?access_token=YOUR_ACCESS_TOKEN&url_long=" + URLEncoder.encode("http://www.baidu.com", "UTF-8");
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 读取返回流并输出

实际使用中还有几个容易忽略的地方:access_token 可能会过期,调用前要确认有效性;接口频次限制虽然没有完全公开固定数值,但批量操作时仍不宜过于密集;开放平台接口偶尔会调整,正式接入前建议再去文档页核对一遍最新参数。把这些处理好,用新浪短链接口做日常推广足够稳定,也能明显改善链接的打开率和投放体验。
今すぐログイン