PHP实现百度、新浪的API接口调用生成短链接网址

栏目: PHP · 发布时间: 5年前

内容简介:在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的。

在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的。

如果你一般都是在手机上操作的话,可以在微信小程序中搜索:短链接的生成

或者在文章底部扫描小程序二维码进行使用

但是短信内容,最多只能七十个字左右,多余就会出现发送两条的情况,然而这并不是我们想要的。

所以,基于这种需求我们急需将长链接转为短链接。常用的可以看到新浪微博的分享地址。下面来看,如何实现?复制代码

新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx 这种格式的短链接。

百度提供了长链接转为短链接的API,可以把长链接转为 dwz .cn/xxx 这种格式的短链接。

百度老接口将于 近期 停止服务,请使用新接口

百度老接口:https://dwz.cn/admin/create(短网址生成接口)
百度新接口:https://dwz.cn/admin/v2/create(短网址生成接口)复制代码

百度API:

<?php
    $host = 'https://dwz.cn';
    $path = '/admin/v2/create';
    $url = $host . $path;
    $method = 'POST';
    $content_type = 'application/json';
    
    // TODO: 设置Token
    $token = '你的Token';
    
    // TODO:设置待注册长网址
    $bodys = array('url'=>'你的长网址'); 
    
    // 配置headers 
    $headers = array('Content-Type:'.$content_type, 'Token:'.$token);
    
    // 创建连接
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_FAILONERROR, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($bodys));
    
    // 发送请求
    $response = curl_exec($curl);
    curl_close($curl);
    
    // 读取响应
    var_dump($response);
    ?>复制代码

响应结果示例

{
    "Code": 0,
    "ShortUrl": "https://dwz.cn/de3rp2Fl",
    "LongUrl": "http://www.baidu.com",
    "ErrMsg": ""
}复制代码

响应参数说明

字段 类型 说明
Code int 0:正常返回短网址
int -1:短网址生成失败
int -2:长网址不合法
int -3:长网址存在安全隐患
int -4:长网址插入数据库失败
int -5:长网址在黑名单中,不允许注册
ShortUrl string 短网址
LongUrl string 长网址(原网址)
ErrMsg string 错误信息

新浪API:

http://api.t.sina.com.cn/short_url/shorten.json (返回结果是JSON格式) 
http://api.t.sina.com.cn/short_url/shorten.xml (返回结果是XML格式)复制代码

请求参数:

source 申请应用时分配的AppKey,调用接口时代表应用的唯一身份。

url_long 需要转换的长链接,需要URLencoded,最多不超过20个。

多个url参数需要使用如下方式请求: url_long=aaa&url_long=bbb

创建source方法

1.进入open.weibo.com/ ,选择菜单 微连接->网站接入。

2.点击立即接入,创建新应用,随便填写应用名称,点击创建。

3.创建成功后,AppKey就是source参数的值,可以用于请求创建短链接。

<?php

namespace App\Services;


class ShortUrlService
{
    /**
     * 调用新浪接口将长链接转为短链接
     * @param  string        $source    申请应用的AppKey
     * @param  array|string  $urlLong  长链接,支持多个转换(需要先执行urlencode)
     * @return array
     */
    public static function getSinaShortUrl($source, $urlLong)
    {
        // 参数检查
        if(empty($source) || !$urlLong){
            return false;
        }
        // 参数处理,字符串转为数组
        if(!is_array($urlLong)){
            $urlLong = array($urlLong);
        }
        // 拼接url_long参数请求格式
        $url_param = array_map(function($value){
            return '&url_long='.urlencode($value);
        }, $urlLong);
        $url_param = implode('', $url_param);
        // 新浪生成短链接接口
        $api = 'http://api.t.sina.com.cn/short_url/shorten.json';
        // 请求url
        $request_url = sprintf($api.'?source=%s%s', $source, $url_param);
        $result = array();
        // 执行请求
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $request_url);
        $data = curl_exec($ch);
        if($error=curl_errno($ch)){
            return false;
        }
        curl_close($ch);
        $result = json_decode($data, true);
        return $result;
    }


}
复制代码

AppKey 以下是公用API,暂时可用。如失效,注册新浪开发者帐号即可

$source = config('app.sina');复制代码

单个链接转换

$urlLong = config('app.url');

$shortUrl = ShortUrlService::getSinaShortUrl($source, $urlLong);复制代码

返回结果

array:1 [
  0 => array:3 [
    "url_short" => "http://t.cn/*******"
    "url_long" => "http://***********.com/#/***********"
    "type" => 0
  ]
]复制代码

多个链接转换

$urlLong = [
            'http://www.***.com/article/1.html',
            'http://www.***.com/article/2.html',
            'http://www.***.com/index.html'
        ];

$shortUrl = ShortUrlService::getSinaShortUrl($source, $urlLong);复制代码

返回结果

array:3 [
  0 => array:3 [
    "url_short" => "http://t.cn/RD12"
    "url_long" => "http://www.***.com/article/1.html"
    "type" => 0
  ]
  1 => array:3 [
    "url_short" => "http://t.cn/RD134KV"
    "url_long" => "http://www.***.com/article/2.html"
    "type" => 0
  ]
  2 => array:3 [
    "url_short" => "http://t.cn/RA8u231F"
    "url_long" => "http://www.***.com/index.html"
    "type" => 0
  ]
]复制代码

通过上面的方法,可以很轻松的实现用 php 生成短链接网址的功能。

项目源码中含有短连接生成的api接口: github.com/WXiangQian/…

附加小程序二维码:

​​ PHP实现百度、新浪的API接口调用生成短链接网址 ​​


以上所述就是小编给大家介绍的《PHP实现百度、新浪的API接口调用生成短链接网址》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ajax for Web Application Developers

Ajax for Web Application Developers

Kris Hadlock / Sams / 2006-10-30 / GBP 32.99

Book Description Reusable components and patterns for Ajax-driven applications Ajax is one of the latest and greatest ways to improve users’ online experience and create new and innovative web f......一起来看看 《Ajax for Web Application Developers》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具