php怎么调用OPPO广告联盟api_php如何获取广告展示与点击数据

轻萱酱_5425

轻萱酱_5425

2026-03-19

586人浏览

原创

oppo广告联盟无php官方sdk,需自行实现服务端api调用;核心是严格按规范构造hmac-sha256签名请求get /v1/report/data接口,注意时间戳、content-md5、header格式及reporttype大小写等细节。

php怎么调用oppo广告联盟api_php如何获取广告展示与点击数据

OPPO广告联盟API没有PHP官方SDK

OPPO广告联盟目前只提供 Java、Android、iOS 的官方接入方式,api_php 这类命名并不存在——你搜到的所谓“PHP SDK”基本是第三方非维护脚本或简单封装的 cURL 调用,不带签名逻辑、无错误重试、不更新鉴权规则。

实际能走通的路径只有一条:自己实现 OPPO 的「服务端 API」调用,核心是 GET /v1/report/data 这类报表接口,但必须严格按文档做 HMAC-SHA256 签名,且时间戳误差不能超 5 分钟。

签名失败是90% PHP请求被拒的直接原因

OPPO 要求所有请求头带 X-Oppo-Date 和 X-Oppo-Authorization,后者由 AccessKeyId:Signature 拼接而成,而 Signature 是对规范字符串做 hash_hmac('sha256', $stringToSign, $secretKey) 得到的 base64 编码结果。

常见翻车点:

  • $stringToSign 必须严格按 “HTTP_METHOD\nContent-MD5\nContent-Type\nX-Oppo-Date\nCanonicalizedOppoHeaders\nCanonicalizedResource” 拼接,换行用 \n,不是 \r\n
  • Content-MD5 头必须存在(即使空请求体),值为 base64_encode(md5('', true)),即 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
  • X-Oppo-Date 格式必须是 Y-m-d\TH:i:s\Z(UTC 时间),用 gmdate('Y-m-d\TH:i:s\Z'),别用 date()
  • 拼接 CanonicalizedOppoHeaders 时,要把所有 x-oppo- 开头的 header 小写、排序、去空格后用 \n 连接,末尾也要加 \n

获取广告展示与点击数据要分两步走

OPPO 不允许一次拉取混合指标。你要分别调用两个接口:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • 曝光数据:请求 GET /v1/report/data?reportType=exposure&startTime=2024-01-01&endTime=2024-01-02
  • 点击数据:请求 GET /v1/report/data?reportType=click&startTime=2024-01-01&endTime=2024-01-02

注意:reportType 只认小写 exposure/click,传 EXPOSURE 或 ad_impression 直接返回 400 Bad Request;时间范围最多查 31 天,且 startTime 和 endTime 必须是自然日(00:00:00–23:59:59 UTC),不能带时分秒偏移。

cURL 请求里最容易漏掉的三个header

少任何一个,401 Unauthorized 或 403 Forbidden 就稳了:

  • Content-Type: application/json(即使 GET 请求也得带)
  • X-Oppo-Date: 2024-01-01T00:00:00Z(必须 UTC,必须带 Z)
  • X-Oppo-Authorization: OPPO_ACCESS_KEY_ID:Base64(Signature)(注意冒号前后无空格)

调试时建议先用 curl -v 打印完整请求头,和 OPPO 文档里的示例逐行比对。PHP 里用 curl_setopt($ch, CURLOPT_HEADER, true) 也能看到响应头里的 X-Oppo-Request-Id,出问题时把这个 ID 提给 OPPO 支持,比截图快得多。

真正卡住的地方往往不是逻辑,而是签名字符串里多了一个空格、时间少了 Z、或者 base64 编码没用原始二进制 md5 结果——这些细节文档里不会加粗,但错一个就全盘失败。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10084

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5981

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2075

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3748

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4454

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3491

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4957

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3882

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11862

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习