timhbw/xmly-php-sdk

XMLY SDK for PHP

v1.0.0 2022-04-28 00:46 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:12 UTC


README

PHP SDK for XMLY Services(喜马拉雅服务端 PHP-SDK)

Software License Build Status GitHub release Latest Stable Version Total Downloads Scrutinizer Code Quality codecov Packagist PHP Version Support

这是一个非官方的 XMLY 服务 PHP SDK。

安装

1、Composer 方法(推荐使用该方法安装,成为优雅的 PHPer 🔥)

Composer 是 PHP 的依赖管理工具,支持您项目所需的依赖项,并将其安装到项目中。关于 Composer 安装的详细说明,请参考 Composer 官网文档

  • 下载 Composer:在安装前,请务必确保已经正确安装了 PHP

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    
  • 安装 Composer:在 Mac 或 Linux 系统环境中,在命令行中执行以下命令进行安装:

    sudo mv composer.phar /usr/local/bin/composer
    
  • 执行以下命令添加依赖项,可以在项目的根目录中运行:

    composer require timhbw/xmly-php-sdk
    

2、Phar 方法

3、源码方式

  • 如果不适应 composer 管理,可以直接下载压缩包(注意需要下载 xmly-php-sdk-版本号.zip 格式的 zip 压缩包,不是 Source code 源码压缩包),解压后,在项目中添加以下代码:
    require_once '/path/to/xmly-php-sdk/vendor/autoload.php';
    

运行环境

  • PHP 5.3+.
  • cURL 扩展。

通用签名生成算法

使用方法

  • SDK 内已封装的接口:直接调用,例如获取专辑列表:

    <?php
    require_once __DIR__ . '/../../autoload.php';
    
    use Xmly\Auth;
    use Xmly\Config;
    use Xmly\API\AodManager;
    
    $appKey = 'xxxx';
    $appSecret = 'xxxx';
    $deviceID = 'xxxx';
    $serverAuthStaticKey = 'xxxx';
    
    $auth = new Auth($appKey, $appSecret, $deviceID);
    
    $config = new Config();
    $config->useHTTPS = true; // 接口是否使用 HTTPS 协议
    $config->enableLogs = true; // 是否记录日志到本地
    
    $aodManager = new AodManager($auth, $config);
    
    $body['category_id'] = 30; // 分类ID,为0时表示热门分类。分类数据可以通过 /categories/list获取
    $body['calc_dimension'] = 1; // 返回结果排序维度:1-最火,2-最新,3-最多播放
    $body = $auth->commonParams($body);
    
    list($ret, $err) = $aodManager->getAlbumsList($body, $serverAuthStaticKey);
    if ($err !== null) {
        var_dump($err);
    } else {
        var_dump($ret);
    }
  • SDK 内未封装的接口:使用封装好的signatureURL方法计算请求 URL 并发起 GET 请求

    <?php
    require_once __DIR__ . '/../autoload.php';
    
    use Xmly\Auth;
    use Xmly\Http\Client;
    
    $appKey = 'xxxx';
    $appSecret = 'xxxx';
    $deviceID = 'xxxx';
    $serverAuthStaticKey = 'xxxx';
    
    $auth = new Auth($appKey, $appSecret, $deviceID);
    
    $url = "https://api.ximalaya.com/marketing/query_activities";
    
    $body['app_key'] = '99b37417e1185eda1378600593b45c40';
    $body['activity_type'] = '1';
    $body = $auth->commonParams($body);
    
    $sigURl = $url . '?' . $auth->signatureURL($body, $serverAuthStaticKey);
    
    $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
    $response = Client::get($sigURl, $headers);
    
    if ($response->ok()) {
        $r = $response->json();
        var_dump($r);
    } else {
        var_dump($response);
    }
  • SDK 内未封装的接口:使用封装好的signatureURL方法计算请求 URL 并发起 POST 请求

  • SDK 内未封装的接口:自行计算请求 URL 并发起 GET 请求

    <?php
    require_once __DIR__ . '/../autoload.php';
    
    use Xmly\Http\Client;
    
    $url = "https://xxxx.xxxx.com/token/getUpToken";
    $contentType = "application/json";
    
    $headers['Content-Type'] = $contentType;
    $response = Client::get($url, $headers);
    
    if ($response->ok()) {
        $r = $response->json();
        var_dump($r);
    } else {
        var_dump($response);
    }
  • SDK 内未封装的接口:自行计算请求 URL 并发起 POST 请求

    <?php
    require_once __DIR__ . '/../autoload.php';
    
    use Xmly\Http\Client;
    
    $url = "https://api.ximalaya.com/oauth2/revoke_refresh_token";
    
    $req['client_id'] = 'xxxx';
    $req['client_secret'] = 'xxxx';
    $req['device_id'] = 'xxxx';
    $req['redirect_uri'] = 'https://xx.xxxx.com/oauth2/get_access_token';
    $req['refresh_token'] = 'xxxxxx';
    $body = http_build_query($req);
    
    $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
    $response = Client::post($url, $body, $headers);
    
    if ($response->ok()) {
        $r = $response->json();
        var_dump($r);
    } else {
        var_dump($response);
    }
  • 普通 GET 请求

    <?php
    require_once __DIR__ . '/../autoload.php';
    
    use Xmly\Http\Client;
    
    $url = "https://xxxx.xxxx.com/token/getUpToken";
    $contentType = "application/json";
    
    $headers['Content-Type'] = $contentType;
    $response = Client::get($url, $headers);
    
    if ($response->ok()) {
    $r = $response->json();
    var_dump($r);
    } else {
    var_dump($response);
    }
  • 普通 POST 请求

    <?php
    require_once __DIR__ . '/../autoload.php';
    
    use Xmly\Http\Client;
    
    $url = 'https://qiniu.timhbw.com/notify/callback';
    
    $req['name'] = 'app';
    $req['color'] = 'red';
    $body = json_encode($req);
    
    $contentType = "application/json";
    
    $headers['Content-Type'] = $contentType;
    $response = Client::post($url, $body, $headers);
    
    if ($response->ok()) {
        $r = $response->json();
        var_dump($r);
    } else {
        var_dump($response);
    }

快速入门

可以参考 Demo 程序,详见 examples 目录下的文件