新浪微博短链接口与研究

上一篇博文中我们讲到了百度短网址接口,那么这篇文章中我们着重讲述的是新浪短链的接口。

相比对与百度短链接口来说,新浪短链接口有一个好处就是,可以解析任意网址,而不像百度,会对一些知名度不很高的网址做一屏蔽。但是有一个麻烦的地方就是,短链是基于微博开放平台而存在的,因此必须申请APPKEY或者OAuth授权。

那么我建议的方式是使用APPKEY方式进行开发,为什么呢?因为OAuth授权是需要用户登录微博的,我们不可能要求别人使用你的短链服务而专门登录一次微博吧?这明显不现实,也不合理。

申请APPKEY的方式非常简单,这里就不再叙述。相信能看到这篇博文的你不会被这些小学生都会的问题难倒吧!

与百度所不同的是,新浪接口没有给出实例代码。那么本博文的重点也就来了,写出一版示例代码来。

同样的,我们仍然使用php作为示例语言。

这个是短链接转成长链接的。

需要注意的是新浪的接口地址是用使用的json接口,并且是https安全方式访问的,所以要选择忽略证书验证,否则就需要下载证书了。。

php
private [function](http://www.php.net/function) get_longurl($tinyurl) {
$data=[array](http://www.php.net/array)('source' => 'YOU APP KEY','url_short'=>$tinyurl);
$api_url = "https://api.weibo.com/2/short_url/expand.json?" . http_build_query($data);
$ch=[curl_init](http://www.php.net/curl_init)();
[curl_setopt](http://www.php.net/curl_setopt)($ch,CURLOPT_URL,$api_url);
[curl_setopt](http://www.php.net/curl_setopt)($ch,CURLOPT_RETURNTRANSFER,[true](http://www.php.net/true));
//注意,这里一定得设置为FALSE,否则就需要下载证书
[curl_setopt](http://www.php.net/curl_setopt)($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
[curl_setopt](http://www.php.net/curl_setopt)($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$strRes=[curl_exec](http://www.php.net/curl_exec)($ch);
[curl_close](http://www.php.net/curl_close)($ch);
$arrResponse=json_decode($strRes,[true](http://www.php.net/true))['urls'][0];
[if](http://www.php.net/if) ($arrResponse['result']=='true')
{
[return](http://www.php.net/return) $arrResponse['url_long'];
}
[return](http://www.php.net/return) $arrResponse['error'];
}
?>

这个长链转短链的

<?
private [function](http://www.php.net/function) get_shorturl($longurl) {
$data=[array](http://www.php.net/array)('source' => 'YOU APP KEY','url_long'=>$longurl);
$api_url = "https://api.weibo.com/2/short_url/shorten.json" . http_build_query($data);
$ch=[curl_init](http://www.php.net/curl_init)();
[curl_setopt](http://www.php.net/curl_setopt)($ch,CURLOPT_URL,$api_url);
[curl_setopt](http://www.php.net/curl_setopt)($ch,CURLOPT_RETURNTRANSFER,[true](http://www.php.net/true));
//注意,这里一定得设置为FALSE,否则就需要下载证书
[curl_setopt](http://www.php.net/curl_setopt)($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
[curl_setopt](http://www.php.net/curl_setopt)($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$strRes=[curl_exec](http://www.php.net/curl_exec)($ch);
[curl_close](http://www.php.net/curl_close)($ch);
$arrResponse=json_decode($strRes,[true](http://www.php.net/true))['urls'][0];
[if](http://www.php.net/if) ($arrResponse['result']=='true')
{
[return](http://www.php.net/return) $arrResponse['url_short'];
}
[return](http://www.php.net/return) $arrResponse['error'];
}

要说明的是,新浪的接口是支持批量转换的,方法是

$data=array(‘source’ => ‘YOU APP KEY’,’url_long’=>$longurl,’url_long’=>$longurl1,’url_long’=>$longurl2,’url_long’=>$longurl3…);

一直传入参数即可。

而获取的时候

$arrResponse=json_decode($strRes,true)[‘urls’][0];
$arrResponse=json_decode($strRes,true)[‘urls’][1];
$arrResponse=json_decode($strRes,true)[‘urls’][2];

等等。

希望可以对你有所启发。

版权说明

本页地址为 https://post.zz173.com/detail/7hDd8TJ5Q9LC4Z-NJWRvvQ.html,本文作者为落月
本文采用 署名-相同方式共享 3.0 中国大陆许可协议 ,分享、演绎需署名且使用相同方式共享。转载请务必保留本页网址和作者信息,否则即为侵权。

– EOF –