标签归档:短链接

新浪微博短地址接口

jucelin在早前发表的一篇关于新浪微博短地址获取办法的文章简单获取新浪微博短地址接口(API),发现很多开发这都对这个比较感兴趣,这里jucelin写了个小接口,方便没有API KEY的朋友使用。实际上获取新浪微博的短地址非常简单,直接使用curl技术就可以了,详细的方法和获取的源代码可以参考上文

API地址:https://jucelin.com/lab/short.php

老规矩,请使用get方式提交参数,post方式获取不到。

参数说明

type:处理方式,1表示原地址缩短为新浪微博短地址;2表示将新浪短地址还原成原地址。

url:链接地址,根据上面的type方式url为相应的地址。

需要注意的地方

请不要尝试将新浪微博短地址再次缩短,结果会返回错误。

演示地址

长转短:https://jucelin.com/lab/short.php?type=1&url=https://jucelin.com

短转长:https://jucelin.com/lab/short.php?type=2&url=http://t.cn/S4bLBm

服务器在国外,建议寄居国外的朋友使用。有API KEY的朋友建议您为自己建个接口,方便自己站内使用。如果有什么疑问欢迎留言。

jucelin写的源代码下载地址:https://jucelin.com/lab/short.txt

简单获取新浪微博短地址接口(API)

短地址(也称短链接、缩短地址等)方面,在twitter发展之后就接着发展了起来,而且很多互联网网站都使用了短地址,国内国外都很多,但稳定和可靠性,还是国内的比较靠谱些,不怕没墙,国外几家已经悲剧了,所以如果项目中用到短地址,个人还是建议使用新浪或者其他国内的短链接服务。

新浪微博短链接API是开放的,而腾讯微博的短地址API没有开放,本想着通过不一样的路径获取腾讯微博的API的,最后还是以失败收场。新浪微博短地址API是不需要用户登录的,所以直接可以调用,而且速度很快,下面的代码是从网站找来的,用的是CURL POST的方法,可供参考。

新浪微博短链接API文档在旧版开发文档中,新版中暂未加入:http://open.weibo.com/wiki/Short_url/shorten

function shortenSinaUrl(long_url){apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.apiKey.'&url_long='.long_url;curlObj = curl_init();
curl_setopt(curlObj, CURLOPT_URL,apiUrl);
curl_setopt(curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt(curlObj, CURLOPT_HEADER, 0);
curl_setopt(curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
response = curl_exec(curlObj);
curl_close(curlObj);json = json_decode(response);
returnjson[0]->url_short;
}

function expandSinaUrl(short_url){apiKey='1234567890';//要修改这里的key再测试哦
apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.apiKey.'&url_short='.short_url;curlObj = curl_init();
curl_setopt(curlObj, CURLOPT_URL,apiUrl);
curl_setopt(curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt(curlObj, CURLOPT_HEADER, 0);
curl_setopt(curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
response = curl_exec(curlObj);
curl_close(curlObj);json = json_decode(response);
returnjson[0]->url_long;
}

参照新浪微博的开发文档,其推荐的是使用get的方法获取。那代码就更简单了

function shorturl(long_url){apiKey='1234567890';//要修改这里的key再测试哦
	apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.apiKey.'&url_long='.long_url;response = file_get_contents(apiUrl);json = json_decode(response);
	returnjson[0]->url_short;
}

function expandurl(short_url){apiKey='1234567890';//要修改这里的key再测试哦
	apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.apiKey.'&url_short='.short_url;response = file_get_contents(apiUrl);json = json_decode(response);
	returnjson[0]->url_long;
}

OK,是不是更简单了?

大家在调试上面的代码是需要填写自己的API key哦,不然肯定获取不到的。

特别提示:短地址服务现在仅对已经认证的APP KEY提供服务,刚申请的APP KEY会被提示无权限。大家可以使用209678993和3818214747两个KEY做测试,这2个KEY来历不明,不建议用于生产。(感谢@congxz6688的提醒)

jucelin写了个调试的文档,大家可以测试下:

长转短:https://jucelin.com/lab/short.php?type=1&url=https://jucelin.com

短转长:https://jucelin.com/lab/short.php?type=2&url=http://t.cn/S4bLBm

就2个参数,type:1表示长转短,2表示短转长,后面的URL就是目标域名了,因为比较懒,就没有写错误判断,新浪微博短地址不支持短地址再转短地址的,逻辑上也应该这样控制。(不信你可以试试)。

关于新浪微博短地址接口的更详细说明可以参考《新浪微博短地址接口》。