通过新浪微博API,生成短链接,支持一次性转多个长链接

什么是短链接

短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。

短链接服务

国内各大微博都推出了自己的短链接服务。例如新浪微博、腾讯微博等。

为什么选用新浪微博API

  1. 新浪微博短链接API是开放的
  2. 新浪微博短链接API不需要用户登录

文档查询链接

使用方法

拿到自己的AppKey后,替换类的成员属性$appKey的值即可,如下这样的,$shortUrl是API请求地址


  1. // APPkey,我在网上找的(https://fengmk2.com/blog/appkey.html),可以自己申请
  2. protected $appKey = '569452181';
  3. // 转短连接API地址
  4. protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';

其他的,基本不需要配置,直接实例化类ShortLink,然后调用方法getShortUrl即可,需要说明的是长链接URL数组$longUrl里的值可以传多个值

当然了,为了方便,我写为一个类,可以根据自己的需要,进行调整,满足自己的需求即可。

源码


  1. <?php
  2. /**
  3. * 通过新浪微博API,生成短链接,支持一次性转多个长链接
  4. * Class shortClass
  5. * @time 2018-08-14
  6. * @author gxcuizy
  7. */
  8. Class ShortLink {
  9. // APPkey,我在网上找的(https://fengmk2.com/blog/appkey.html),可以自己申请
  10. protected $appKey = '569452181';
  11. // 转短连接API地址
  12. protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
  13. /**
  14. * 生成短链接
  15. * @param array $longUrl 长链接数组
  16. * @return array 返回短连接数据
  17. */
  18. public function getShortUrl($longUrl = []) {
  19. $code = true;
  20. $msg = '请求成功!';
  21. $result = [];
  22. // 长链接数组为空,不处理
  23. if (empty($longUrl)) {
  24. $code = false;
  25. $msg = '长链接数据不能为空';
  26. return ['code' => $code, 'msg' => $msg, 'result' => $result];
  27. }
  28. // 拼接请求URL
  29. $longUrlStr = $this->_getLongUrl($longUrl);
  30. $shortUrl = $this->shortUrl;
  31. $appKey = $this->appKey;
  32. $param = 'source=' . $appKey . '&' . $longUrlStr;
  33. $curlUrl = $shortUrl . $param;
  34. // 发送CURL请求
  35. $result = $this->_sendCurl($curlUrl);
  36. return ['code' => $code, 'msg' => $msg, 'result' => $result];
  37. }
  38. /**
  39. * 获取请求URL字符串
  40. * @param array $longUrl 长链接数组
  41. * @return string 长链接URL字符串
  42. */
  43. private function _getLongUrl($longUrl = []) {
  44. $str = '';
  45. foreach ($longUrl as $url) {
  46. $str .= ('url_long=' . $url . '&');
  47. }
  48. $newStr = substr($str, 0, strlen($str) - 1);
  49. return $newStr;
  50. }
  51. /**
  52. * 发送CURL请求(GET)
  53. * @param string $curlUrl 请求地址
  54. * @return array 返回信息
  55. */
  56. private function _sendCurl($curlUrl) {
  57. // 初始化
  58. $ch = curl_init();
  59. // 设置选项,包括URL
  60. curl_setopt($ch, CURLOPT_URL, $curlUrl);
  61. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  62. curl_setopt($ch, CURLOPT_HEADER, 0);
  63. // 执行并获取HTML文档内容
  64. $output = curl_exec($ch);
  65. // 释放curl句柄
  66. curl_close($ch);
  67. // Json数据转为数组
  68. $result = json_decode($output, true);
  69. return $result;
  70. }
  71. }
  72. // 实例化对象
  73. $shortObj = new ShortLink();
  74. // 多个连接可以直接放到数组中,类似$longUrl = ['url1', 'url2', ……]
  75. $longUrl = ['http://blog.y0701.com/index.html'];
  76. // 开始转长链接为短链接
  77. $result = $shortObj->getShortUrl($longUrl);
  78. print_r($result);

结束语

上面说到的网上查找得到的一些AppKey,因为来源不明,所以,不建议用于生产环境,需要用于生产环境的话,建议直接在新浪微博开发者平台里创建自己的应用就行。

原文地址:https://segmentfault.com/a/1190000016004175

新浪微博API生成短链接的更多相关文章

  1. PHP调用新浪API 生成短链接

    我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...

  2. PHP生成短链接方法

    PHP生成短链接方法方法一:新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx 这种格式的短链接. API: http://api.t.sina.com.cn/short_url/ ...

  3. Java生成短链接

    为什么要生成短链接 微博之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少. 那么使用短链接的作用有哪些呢?1.字数,2.统计,3.监控,4.过滤 ...

  4. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 package com.zdz.test; im ...

  5. openresty && hashids&& redis 生成短链接

    1. 原理     a. 从redis 获取需要表示的短链接的id( redis incr)     b. hashids 编码 id     c. openresty  conteent_by_lu ...

  6. 使用plv8+hashids生成短链接服务

    有写过一个集成npm plv8 以及shortid生成短链接id服务,实际上我们可以集成触发器自动生成url对应的短链接地址,hashids也是一个不错的选择. 以下是一个别人写的一个博客实现可以参考 ...

  7. PHP调用百度api生成短网址&根据短网址恢复长网址

    接口api文档地址:http://dwz.cn/#/apidoc?_k=i9ev5p 代码demo header("Content-type: text/html; charset=utf- ...

  8. 使用新浪API生成短连接

    公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三 ...

  9. 生成短链接的URL

    假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常短例如: http://t.cn/E70Piib, 我们应该都能想到链接中的E70Piib对应的就是存储长链接地址的数据记录的I ...

随机推荐

  1. poj 1741 楼教主男人八题之中的一个:树分治

    http://poj.org/problem? id=1741 Description Give a tree with n vertices,each edge has a length(posit ...

  2. 利用mass storage class 做免驱动usb设备.

    当需要使用usb bulk传输,想让设备像串口通讯那样和PC主机通信, 通常需要自己做一个PC端的驱动,比较麻烦. 为避免在pc上编写usb设备驱动的麻烦,可以将设备做成mass storage 类的 ...

  3. (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作

    上午写了下单向循环链表的程序,今天下午我把双向链表的程序写完了.其实双向链表和单向链表也是有很多相似的地方的,听名字可以猜到,每个节点都包含两个指针,一个指针指向上一个节点,一个指针指向下一个节点.这 ...

  4. java SWing事件调用的两种机制

      Java(91)  /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; impo ...

  5. 39. Ext.data.SimpleStore的使用方法

    转自:https://www.cnblogs.com/bluestorm/archive/2013/06/14/3135361.html 新版4.2的extjs已经废弃了simpleStore --& ...

  6. C. Searching for Graph(cf)

    C. Searching for Graph time limit per test 1 second memory limit per test 256 megabytes input standa ...

  7. hihoCoder 数组重排

    找每个位置循环节的大小. 得到结果d1, d2, ....., dn. 最终结果cmd(d1, d2, ...., dn). 水题. 题目链接: http://hihocoder.com/contes ...

  8. codevs1690 开关灯(线段树)

    1690 开关灯 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description YYX家门前的街上有N(2< ...

  9. 设计模式 | 适配器模式(adapter)

    定义: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.   书中说到Gof的设计模式中,讲了两种类型的适配器模式: 1.类适配 ...

  10. 【洛谷4933】大师(DP)

    题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行 ...