腾讯广告 广点通 数据上报 上传用户行为数据

腾讯广告文档地址:https://developers.e.qq.com/docs/start

第一步 准备账户信息

const APP_URl = ‘https://api.e.qq.com’;
const CLIENT_ID = ‘CLIENT_ID’;
const CLIENT_SECRET= ‘CLIENT_SECRET’;
const REDIRECT_URI = ‘https://域名/token_url.php’; //回调地址
账户设置的时候 选择永久token比较方便后期开发

第二步 获取账户token

1.UserActions 在文章最后
2. 浏览器访问执行indexmain()后会跳转到一个腾讯授权地址 使用有广告权限的账户扫码登录 你会得到一串json

<?php
const APP_URl = 'https://api.e.qq.com';
const CLIENT_ID = '';
const CLIENT_SECRET= '';
const REDIRECT_URI = '';
indexmain();
function indexmain(){
    $client_id = CLIENT_ID;
    $authorization_code = $_REQUEST['authorization_code'];
    $redirect_uri = urlencode(REDIRECT_URI);
    if(empty($authorization_code)){
        $url = "https://developers.e.qq.com/oauth/authorize?client_id=".
            $client_id."&redirect_uri=".$redirect_uri."&state=1";
        header("Location:".$url);
    }else{
        UserActions::gettoken($authorization_code);
    }
}
?>

3.以上方法获取的json示例:

  • 将account_id 记做:const ACCOUNT_ID =‘授权账户’
  • 将access_token 记做: const ACCESS_TOKEN =‘授权账户的token’;
{"code":0,"message":"","data":{"authorizer_info":{"account_uin":123456789,"account_id":12345678,"account_name":"zhanghumingzi","login_name":123456789,"scope_list":["user_actions"],"wechat_account_id":"","account_role_type":"ACCOUNT_ROLE_TYPE_ADVERTISER","account_type":"ACCOUNT_TYPE_ADVERTISER","role_type":"ROLE_TYPE_SELF_OPERATOR"},"access_token":"3076******77fc490","refresh_token":"4d9e***d6","access_token_expires_in":999999999,"refresh_token_expires_in":999999999}}
 

第三步 创建数据源

  1. 执行以下方法可以获得数据源信息 返回json
  2. 每一个ACCOUNT_ID都可以创建自己的数据源 不能用别人的
  3. 一个账户数据源只需要创建一次
UserActions::user_action_sets_add(ACCESS_TOKEN,ACCOUNT_ID);
  1. 返回的json 示例:
  • 将user_action_set_id 记做:const USER_ACTION_SET_ID =‘数据源ID’
{"code":0,"data":{"user_action_set_id":120030000000},"message":""}

第四步 如何获取click_id

1.腾讯文档地址:https://developers.e.qq.com/docs/guide/conversion/new_version/Web_api

2.获取click_id 按照平时获取url网址上的参数一样的方法就可以
3.示例如下:文档里记做: const CLICK_ID=“string clickid是字符串”;

var click_id = getQueryString('gdt_vid') || ''

第五步 上传用户行为数据

1.此处提交下单数据
2.参数[channel] 这个字段目前仅支持TENCENT或者不传 乱传影响归因

UserActions::user_actions_add(ACCESS_TOKEN,ACCOUNT_ID);

3.上传成功后返回。
4.返回成功不代表归因成功,需到投放端查看

{"code":0,"message":""}

UserActions

class UserActions {
    public static function user_action_sets_add($access_token,$account_id,$interface = 'user_action_sets/add')
    {
        $url = APP_URl.'/v1.1/' . $interface;

        $common_parameters = array (
            'access_token' => $access_token,
            'timestamp' => time(),
            'nonce' => md5(uniqid('', true))
        );
        $parameters = array (
            'account_id' => $account_id,
            'type' => 'WEB',
            'name' => 'webuser_action_set_name',
            'description' => '',
            'usages' =>
                array (
                ),
        );
        $parameters = json_encode($parameters);
        $request_url = $url . '?' . http_build_query($common_parameters);

        $response = self::curl_tx($request_url,$parameters);
        print_r($response);
        return $response;
    }

    public static function user_actions_add($access_token,$account_id,$interface = 'user_actions/add')
    {
        $promotion_link='https://zxxgz.com/buy.html?id=53&edition_type=B&gdt_vid='.$click_id;
        $url = APP_URl.'/v1.1/' . $interface;

        $common_parameters = array (
            'access_token' => $access_token,
            'timestamp' => time(),
            'nonce' => md5(uniqid('', true))
        );

        $parameters = array (
            'account_id' => $account_id,
            'user_action_set_id' => USER_ACTION_SET_ID,
            'actions' =>
                array (
                    0 =>
                        array (
                            'action_time' => time(),
                            'action_type' => 'COMPLETE_ORDER',
                            'url'=>$promotion_link,
                        ),
                ),
        );
        $parameters['actions'][0]['trace']['click_id'] = CLICK_ID;
        $parameters = json_encode($parameters);
        $request_url = $url . '?' . http_build_query($common_parameters);
        $response = self::curl_tx($request_url,$parameters);
        print_r($response);
        return $response;
        //{"code":0,"message":"","message_cn":""}
    }

    public static function curl_tx($request_url,$parameters){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $request_url);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            "Content-Type:application/json"
        ));
        $response = curl_exec($curl);
        if (curl_error($curl)) {
            $error_msg = curl_error($curl);
            $error_no = curl_errno($curl);
            curl_close($curl);
            throw new \Exception($error_msg, $error_no);
        }
        curl_close($curl);
        return $response;
    }


    public static function gettoken($authorization_code)
    {
        $go_url = APP_URl."/oauth/token?";
        $redirect_uri = urlencode(REDIRECT_URI);
        $params = [
            'client_id'          => CLIENT_ID,
            'client_secret'      => CLIENT_SECRET,
            'grant_type'         => 'authorization_code',
            'authorization_code' => $authorization_code,
            'redirect_uri'       => $redirect_uri,
        ];
        $str = '';
        foreach ($params as $k=>$l){
            $str.='&'.$k.'='.$l;
        }
        $go_url .= ltrim($str,'&');
        $result = self::curl_get_https($go_url,$params,$params);
        print_r($result);
    }

    public static function curl_get_https($url,$header,$data){ // 模拟提交数据函数
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);// 头部信息
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'Errno'.curl_error($curl);//捕抓异常
        }
        curl_close($curl); // 关闭CURL会话
        return $tmpInfo; // 返回数据,json格式
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
上传数据腾讯数据库,需要使用一个后台服务来处理数据上传请求。这个后台服务需要访问腾讯数据库,并将数据插入到数据库中。 以下是一个基本的步骤: 1. 创建一个腾讯数据库 2. 在腾讯云控制台中创建一个 API 密钥,用于访问腾讯云 API。 3. 在后台服务中使用腾讯云 SDK 连接到腾讯数据库,并使用 API 密钥进行身份验证。 4. 根据需要,在后台服务中编写代码,将数据插入到腾讯数据库中。 5. 在前端 JavaScript 中,使用 AJAX 或 fetch API 发送 POST 请求到后台服务,将数据上传腾讯数据库。 下面是一个示例代码: 后台服务: ``` const tencentcloud = require("tencentcloud-sdk-nodejs"); const { MySqlClient, Models } = tencentcloud.dbbrain.v20210527; const { DescribeDBDiagReportTasksRequest } = Models; // 初始化 SDK const clientConfig = { credential: { secretId: "", secretKey: "", }, region: "ap-guangzhou", profile: { httpProfile: { endpoint: "dbbrain.tencentcloudapi.com", }, }, }; const client = new MySqlClient(clientConfig); // 连接数据库,并将数据插入到表中 async function insertData(data) { await client.InitiateWorkflow({}); const params = { TaskType: 0, InstanceId: "", StartTime: "", EndTime: "", }; const request = new DescribeDBDiagReportTasksRequest(); request.from_json_string(JSON.stringify(params)); const response = await client.DescribeDBDiagReportTasks(request); console.log(response.to_json_string()); } // 启动服务 const express = require("express"); const app = express(); const port = 3000; app.use(express.json()); app.post("/uploadData", async (req, res) => { const data = req.body; await insertData(data); res.send("Data uploaded to Tencent Cloud database"); }); app.listen(port, () => { console.log(`Server started at http://localhost:${port}`); }); ``` 前端 JavaScript: ``` async function uploadData(data) { const response = await fetch("/uploadData", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(data), }); console.log(await response.text()); } const data = { name: "John Doe", age: 30 }; uploadData(data); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值