westng/oceanengine-sdk-php

巨量引擎开放平台PHP语言SDK

3.0.2 2025-08-20 10:48 UTC

This package is auto-updated.

Last update: 2025-08-20 10:48:49 UTC


README

PHP Version License Composer

🚀 巨量引擎开放平台 PHP SDK - 为 PHP 开发者提供完整的巨量引擎 API 集成解决方案

📖 概述

在技术蓬勃发展的当下,巨量引擎开放平台的 Marketing API SDK,本应是普惠所有开发者的得力工具,涵盖巨量广告、巨量千川、巨量本地推、巨量星图及企业号相关功能,从 Token 获取到请求封装、响应解释,每个环节都暗藏助力高效开发的玄机。

其本地化设计,理应为开发者开辟便捷通道,无论经验如何,都能借它在 API 调用之路上畅行无阻。可现实却令人咋舌,面对 PHP 这片高手云集、活力满满的领域,官方竟然缺失 PHP 版本的 SDK!

这简直荒谬至极。PHP 开发者们为互联网立下汗马功劳,如今却像被抛弃的孩子。看着其他语言开发者仗着官方 SDK 大步快跑,自己只能徒手在荆棘中挣扎,太不公平!好比马拉松赛场,别人装备精良、补给充足,自己却赤脚前行、无水可饮。

幸有补救性 SDK,让 PHP 开发者不至于掉队,能凭本事搭起投放管理系统,但背后是他们付出的诸多额外心血。官方这种"偏心"做法,实在该反省,给 PHP 开发者们一个交代!

✨ 特性

  • 🎯 完整覆盖:支持巨量广告、千川、本地推、星图等全平台 API
  • 高性能:基于 GuzzleHttp,支持连接复用和智能重试
  • 🔧 易配置:支持环境变量、配置文件等多种配置方式
  • 🛡️ 强健性:内置错误处理、重试机制、频控处理
  • 📚 文档完善:详细的使用文档和示例代码
  • 🔄 现代化:支持 PHP 8.0+,使用现代 PHP 特性

🚀 快速开始

环境要求

  • PHP >= 8.0
  • GuzzleHttp 7.0+ (自动安装)
  • 推荐使用 Composer 安装依赖

安装

composer require westng/oceanengine-sdk-php

基础使用

<?php

use Core\Exception\OceanEngineException;
use OceanEngineSDK\OceanEngineClient;

// 创建客户端
$client = new OceanEngineClient('your_access_token');

// 配置重试机制
$client->setRetryConfig(
    maxRetries: 3,
    retryDelay: 1000,
    enableRetry: true
);

// 调用 API
try {
    $response = $client->module('Account')
        ->AccountInfo
        ->AdvertiserInfo()
        ->setParams(['account_ids' => ['123456789']])
        ->send();

    $data = json_decode($response->getBody(), true);
    print_r($data);
} catch (OceanEngineException $e) {
    echo "错误: {$e->getErrorMessage()}";
}

📋 使用条件

开发者条件

  • 使用 SDK 需要首先注册成为巨量引擎开发者,请参考开发者快速入门文档
  • 使用 SDK 需要先拥有 API 的访问权限,所有 SDK 的使用与应用拥有的权限组相关联

📁 项目结构

oceanengine-sdk-php/
├── 📚 docs/                                    # 接口文档
│   ├── ACCOUNT.md                              # 账号服务文档
│   ├── DATAREPORTS.md                          # 数据报表文档
│   ├── JULIANGADS.md                           # 巨量广告文档
│   ├── JULIANGQIANCHUAN.md                     # 巨量千川文档
│   ├── JULIANGLOCALPUSH.md                     # 巨量本地推文档
│   ├── JULIANGSTARMAP.md                       # 巨量星图文档
│   ├── MATERIALS.md                            # 素材管理文档
│   └── TOOLS.md                                # 工具文档
├── 🔧 src/                                     # 源代码
│   ├── Oauth/                                  # OAuth 认证
│   │   ├── GetAccessToken.php                  # 获取 AccessToken
│   │   └── RefreshToken.php                    # 刷新 AccessToken
│   ├── Core/                                   # 核心包
│   │   ├── Autoloader/                         # 自动加载器
│   │   ├── Exception/                          # 异常处理
│   │   ├── Helper/                             # 助手函数
│   │   ├── Http/                               # HTTP请求 (GuzzleHttp)
│   │   └── Profile/                            # 核心配置
│   └── Api/                                    # API 模块
│       ├── Account/                            # 账号管理
│       ├── JuLiangAds/                         # 巨量广告
│       ├── JuLiangQianChuan/                   # 巨量千川
│       ├── JuLiangStarMap/                     # 巨量星图
│       ├── JuLiangLocalPush/                   # 巨量本地推
│       ├── EnterpriseAccount/                  # 企业号
│       ├── Materials/                          # 素材管理
│       ├── DataReports/                        # 数据报表
│       └── Tools/                              # 工具
├── 🧪 tests/                                   # 测试文件
│   ├── config/                                 # 测试配置
│   │   ├── ConfigManager.php                   # 配置管理器
│   │   └── load_config.php                     # 配置加载器
│   └── ...                                     # 各模块测试文件
├── 📄 .env.example                             # 环境变量示例
├── 📄 composer.json                            # Composer 配置
├── 📄 LICENSE                                  # 开源协议
├── 📄 README.md                                # 项目说明
├── 📄 HTTP_MIGRATION.md                        # HTTP迁移文档
├── 📄 CONFIG_GUIDE.md                          # 配置管理指南
├── 📄 ERROR_CODES_GUIDE.md                     # 错误码说明
└── 📄 TEST_MIGRATION.md                        # 测试文件迁移指南

📚 详细使用指南

1. 用户授权(获取 Access Token)

获取授权 URL

参数 说明 默认值 示例值
cb_url 回调链接 - https://xxx.xxx.xxx
scope 授权范围(全部权限 null 即可) - -
state 自定义参数 your_custom_params -
type 授权类型 QC QCAD
<?php

use Core\Exception\OceanEngineException;
use OceanEngineSDK\OceanEngineAuth;

$auth = new OceanEngineAuth(APPID, SECRET);
$url = $auth->getAuthCodeUrl(CALLBACK_URL, '', 'auth_code', 'AD');
echo "授权链接: {$url}";

获取 Access Token

<?php

use Core\Exception\OceanEngineException;
use OceanEngineSDK\OceanEngineAuth;

$auth = new OceanEngineAuth(APPID, SECRET);

// 使用授权码获取 token
$tokenData = $auth->getAccessToken($authCode);

// 刷新 token
$newTokenData = $auth->refreshToken($refreshToken);

2. API 调用

配置重试机制

参数 说明 默认值 示例值
maxRetries 最大重试次数 3 5
retryDelay 重试延迟(毫秒) 1000 2000
retryableStatusCodes 可重试 HTTP 状态码 [408, 429, 500, 502, 503, 504] [408, 429, 500]
enableRetry 是否启用重试 true false
retryableBusinessCodes 可重试业务错误码 [40100, 40110, 50000] [40100, 50000]
<?php

$client = new OceanEngineClient(TOKEN);

// 配置重试机制
$client->setRetryConfig(
    maxRetries: 3,
    retryDelay: 1000,
    retryableStatusCodes: [408, 429, 500, 502, 503, 504],
    enableRetry: true,
    retryableBusinessCodes: [40100, 40110, 50000]
);

// 动态控制重试开关
$client->setRetryEnabled(true);   // 启用重试
$client->setRetryEnabled(false);  // 禁用重试

获取广告主信息

<?php

use Core\Exception\OceanEngineException;
use OceanEngineSDK\OceanEngineClient;

try {
    $client = new OceanEngineClient(TOKEN);

    $response = $client->module('Account')
        ->AccountInfo
        ->AdvertiserInfo()
        ->setParams([
            'account_ids' => ['123456789'],
            'fields' => ['id', 'name', 'status']
        ])
        ->send();

    $data = json_decode($response->getBody(), true);
    print_r($data);
} catch (OceanEngineException $e) {
    echo "错误类型: {$e->getErrorType()}\n";
    echo "错误码: {$e->getErrorCode()}\n";
    echo "错误信息: {$e->getErrorMessage()}\n";
}

🔧 配置说明

环境变量配置

创建 .env 文件:

# API 配置
APPID=your_app_id
SECRET=your_app_secret
TOKEN=your_access_token
REFRESH_TOKEN=your_refresh_token

# 广告主配置
ADVERTISER_IDS=123456789,987654321

# HTTP 配置
HTTP_CONNECT_TIMEOUT=20
HTTP_READ_TIMEOUT=30
HTTP_MAX_RETRIES=3
HTTP_RETRY_DELAY=1000
HTTP_ENABLE_RETRY=true
HTTP_RETRYABLE_BUSINESS_CODES=40100,40110,50000

配置优先级

  1. 系统环境变量 (最高优先级)
  2. .env 文件
  3. 默认配置 (最低优先级)

🚨 错误处理

SDK 提供了完善的错误处理机制:

try {
    $response = $client->module('Account')->AccountInfo->AdvertiserInfo()
        ->setParams($args)
        ->send();
} catch (OceanEngineException $e) {
    // 处理业务错误
    echo "错误类型: {$e->getErrorType()}\n";
    echo "错误码: {$e->getErrorCode()}\n";
    echo "错误信息: {$e->getErrorMessage()}\n";
} catch (Exception $e) {
    // 处理其他错误
    echo "系统错误: {$e->getMessage()}\n";
}

📊 开发进度

模块 调用方式 状态 文档
账户管理 $client->module('Account') ✅ 已完成 查看文档
素材管理 $client->module('Materials') ✅ 已完成 查看文档
数据报表 $client->module('DataReports') ✅ 已完成 查看文档
工具 $client->module('Tools') ✅ 已完成 查看文档
巨量广告 $client->module('JuLiangAds') ✅ 已完成 查看文档
巨量千川 $client->module('JuLiangQianChuan') ✅ 已完成 查看文档
巨量星图 $client->module('JuLiangStarMap') ✅ 已完成 查看文档
巨量本地推 $client->module('JuLiangLocalPush') ✅ 已完成 查看文档
企业号 $client->module('EnterpriseAccount') ⏳ 未开始 -

⚠️ 上述进度仅供参考,实际以源码为准。
🧠 欢迎查看源码深入探索,接口比文档更诚实!

📚 相关文档

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 开源协议

本项目采用 MIT 协议 - 查看 LICENSE 文件了解详情。

📞 问题反馈

如在使用过程中遇到问题、建议或灵感……请无视(开玩笑的)。

📨 实在憋不住可以提 Issue 或 PR ~

如果这个项目对您有帮助,请给个 ⭐️ 支持一下!

Made with ❤️ by westng