w.url.cn短网址生成API源码

一只鱼 2年前 (2020) 一只鱼
3,723 0

微信公众号开发者平台提供短网址生成的API,最终生成的短网址是w.url.cn的,下面是详细的代码。

官方文档

https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html

请求参数

access_token
action 此处填long2short,代表长链接转短链接
long_url 需要转换的原链接

HTTP POST请求网址
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN

请求流程

1、获取本地缓存的access_token,如果超过有效期,则重新获取,如果还没过期,直接使用缓存的access_token
2、构建请求参数,发起POST请求
3、获得短网址

代码

appid和appsecret可以申请一个微信公众号测试账号进行开发
申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

  1. <?php
  2. // www.yyob.com
  3. header(“Content-type:application/json”);
  4. // 声明APPID、APPSECRET
  5. $appid = “xxx”;
  6. $appsecret = “xxx”;
  7. // 获取access_token和jsapi_ticket
  8. function getToken(){
  9. $file = file_get_contents(“access_token.json”,true);//读取access_token.json里面的数据
  10. $result = json_decode($file,true);
  11. //判断access_token是否在有效期内,如果在有效期则获取缓存的access_token
  12. //如果过期了则请求接口生成新的access_token并且缓存access_token.json
  13. if (time() > $result[‘expires’]){
  14. $data = array();
  15. $data[‘access_token’] = getNewToken();
  16. $data[‘expires’] = time()+7000;
  17. $jsonStr = json_encode($data);
  18. $fp = fopen(“access_token.json”, “w”);
  19. fwrite($fp, $jsonStr);
  20. fclose($fp);
  21. return $data[‘access_token’];
  22. }else{
  23. return $result[‘access_token’];
  24. }
  25. }
  26. //获取新的access_token
  27. function getNewToken($appid,$appsecret){
  28. global $appid;
  29. global $appsecret;
  30. $url = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=”.$appid.”&secret=”.$appsecret.””;
  31. $access_token_Arr = file_get_contents($url);
  32. $token_jsonarr = json_decode($access_token_Arr, true);
  33. return $token_jsonarr[“access_token”];
  34. }
  35. // 获得长链接
  36. $long_url = trim($_GET[“long_url”]);
  37. // 过滤
  38. if (empty($long_url)) {
  39. $result = array(
  40. “result” => “101”,
  41. “msg” => “请传入长链接”
  42. );
  43. } else if (strpos($long_url,’http’) !== false){
  44. //初始化 CURL
  45. $ch = curl_init();
  46. //请求地址
  47. curl_setopt($ch, CURLOPT_URL, ‘https://api.weixin.qq.com/cgi-bin/shorturl?access_token=’.getToken());
  48. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);
  49. $postdata = ‘{“action”:”long2short”,”long_url”:”‘.$long_url.'”}’;
  50. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  51. // 对认证证书来源的检查
  52. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  53. // 从证书中检查SSL加密算法是否存在
  54. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  55. //获取的信息以文件流的形式返回,而不是直接输出
  56. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  57. //发起请求
  58. $dwzStr = curl_exec($ch);
  59. //解析数据
  60. $arr_dwzStr = json_decode($dwzStr, true);
  61. $dwz = $arr_dwzStr[“short_url”];
  62. //关闭请求
  63. curl_close($ch);
  64. // 返回结果
  65. $result = array(
  66. “result” => “100”,
  67. “msg” => “解析成功”,
  68. “dwz” => $dwz
  69. );
  70. }else{
  71. $result = array(
  72. “result” => “102”,
  73. “msg” => “长链接不合法”
  74. );
  75. }
  76. // 返回JSON
  77. echo json_encode($result,JSON_UNESCAPED_UNICODE);
  78. ?>


生成示例

{“result”:”100″,”msg”:”生成成功”,”dwz”:”https:\/\/w.url.cn\/s\/A0qbuTW”}

 

点点赞赏,手留余香

版权声明:一只鱼 发表于 2020-12-22 3:29:59。
转载请注明:w.url.cn短网址生成API源码 | 轻谈浅唱 – Mi导航

暂无评论

暂无评论...