byteark/byteark-sdk-php

ByteArk SDK for PHP

v0.2.0 2020-07-13 02:13 UTC

README

Packagist Version Build Status

安装

您可以通过 Composer 安装此 SDK

composer require byteark/byteark-sdk-php

使用 ByteArkV2UrlSigner 类

首先,使用 access_idaccess_secret 创建一个 ByteArkV2UrlSigner 实例。(对于 ByteArk Fleet,目前 access_id 是可选的)。

然后,调用 sign 方法,传入要签名的 URL、URL 应该过期的 Unix 时间戳和签名选项。

对于签名选项参数,您可以包括 method,它确定允许哪种 HTTP 方法(如果没有指定,默认为 GET),并且可以包括在 ByteArk 文档 中出现的自定义策略。

以下示例将创建一个允许在 2018 年 1 月 1 日之前 GET 资源的已签名 URL。

$signer = new \ByteArk\Signer\ByteArkV2UrlSigner([
    'access_id' => '2Aj6Wkge4hi1ZYLp0DBG',
    'access_secret' => '31sX5C0lcBiWuGPTzRszYvjxzzI3aCZjJi85ZyB7',
]);

$signedUrl = $signer->sign(
    'https://example.cdn.byteark.com/path/to/file.png',
    1514764800,
    [
        'method' => 'GET',
    ]
);

/*
Output:
https://example.cdn.byteark.com/path/to/file.png
    ?x_ark_access_id=2Aj6Wkge4hi1ZYLp0DBG
    &x_ark_auth_type=ark-v2
    &x_ark_expires=1514764800
    &x_ark_signature=OsBgZpn9LTAJowa0UUhlYQ
*/

HLS 使用示例

在为 HLS 签名 URL 时,您必须选择通用的路径前缀并将其分配给 path_prefix 选项,因为 ByteArk 将自动使用相同的选项和签名为每个片段创建安全的 URL。

例如,如果您的流 URL 是 https://example.cdn.byteark.com/live/playlist.m3u8,您可以使用 /live/ 作为路径前缀。

$signer = new \ByteArk\Signer\ByteArkV2UrlSigner([
    'access_id' => '2Aj6Wkge4hi1ZYLp0DBG',
    'access_secret' => '31sX5C0lcBiWuGPTzRszYvjxzzI3aCZjJi85ZyB7',
]);

$signedUrl = $signer->sign(
    'https://example.cdn.byteark.com/live/playlist.m3u8',
    1514764800,
    [
        'method' => 'GET',
        'path_prefix' => '/live/',
    ]
);

echo $signedUrl;

/*
Output:
https://example.cdn.byteark.com/live/playlist.m3u8
    ?x_ark_access_id=2Aj6Wkge4hi1ZYLp0DBG
    &x_ark_auth_type=ark-v2
    &x_ark_expires=1514764800
    &x_ark_path_prefix=%2Flive%2F
    &x_ark_signature=7JGsff2mBQEOoSYHTjxiVQ
*/

选项

ByteArkV2UrlSigner

ByteArkV2UrlSigner.sign(url, expires = null, options = [])

使用 RequestInfo 类

(这对于旧版签名条件很有用,例如 client_ip 和 user_agent)。

创建一个 RequestInfo 实例后,您可以使用 getCurrentUrl 方法来帮助您获取当前 URL,并使用 get 方法获取一些这些策略的值

  • client_ip
  • user_agent

例如

$requestInfo = new \ByteArk\Request\RequestInfo();
$signer = new \ByteArk\Signer\ByteArkV2UrlSigner([
    'access_id' => '2Aj6Wkge4hi1ZYLp0DBG',
    'access_secret' => '31sX5C0lcBiWuGPTzRszYvjxzzI3aCZjJi85ZyB7',
]);

$signedUrl = $signer->sign(
    'http://inox.qoder.byteark.com/video-objects/QDuxJm02TYqJ/playlist.m3u8',
    1514764800,
    [
        'method' => 'GET',
        'path_prefix' => '/video-objects/QDuxJm02TYqJ/',
        'referer' => $requestInfo->getCurrentUrl()
    ]
);

示例项目

您可以尝试 示例项目,该项目允许您通过简单的网页表单创建已签名的 URL。