跳到主要内容

Go SDK

1 使用场景

DataNexus 的数据上报 API 可使用腾讯广告 Marketing API SDK进行调用。该 SDK 提供了 Token获取、请求封装、响应解释等功能,以本地化方式轻松完成API的调用和结果的获取,旨在帮助开发者快速搭建数据上报系统。



2 使用条件

  1. 使用 SDK 需要首先注册成为腾讯广告开发者,请参考开发者快速入门文档
  2. 使用 SDK 需要先拥有API的访问权限,所有SDK的使用与应用拥有的权限组相关联
  3. Go SDK 需要依赖 1.11 版本及以上


3 使用步骤

3.1 如何安装

推荐使用 go mod 的方式获取

使用 go mod 获取

其中的 ${VERSION} 需要替换成要使用的版本,如v1.0.0,具体版本号可查看相应的tag

go mod edit -require="github.com/tencentad/marketing-api-go-sdk@${VERSION}"
go mod download

使用 go get 获取

go get github.com/tencentad/marketing-api-go-sdk

3.2 如何使用

SDK数组参数调用的方法名与API接口一一对应,如user_actions/add接口就对应tads.UserAtions().Add()方法

注意:model中的所有基本数据类型均为指针类型, 例如:string, bool, int64, float64

获取Access Token

信息

DataNeuxs - 数据源接入功能支持一键生成 Access Token(具有数据上报权限组,有效期为永久)。如使用一键生成的 Access Token,可跳过本步骤。

注:本示例适用于授权时通过Authorization Code获取Access Token和Refresh Token,如需更新Access Token请参考 ./examples/Authentication/RefreshAccessToken.go 示例

package main

import (
"encoding/json"
"fmt"
"github.com/antihax/optional"
"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/api"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
"github.com/tencentad/marketing-api-go-sdk/pkg/errors"
)

func main() {
tads := ads.Init(&config.SDKConfig{})
// your client id
clientId := int64(0)
clientSecret := "your client secret"
grantType := "authorization_code"
oauthTokenOpts := &api.OauthTokenOpts{
AuthorizationCode: optional.NewString("your authorization code"),
RedirectUri: optional.NewString("your authorization code"),
}
ctx := *tads.Ctx
// oauth/token接口即对应Oauth().Token()方法
response, _, err := tads.Oauth().Token(ctx, clientId, clientSecret, grantType, oauthTokenOpts)

if err != nil {
if resErr, ok := err.(errors.ResponseError); ok {
errStr, _ := json.Marshal(resErr)
// TODO for api error
fmt.Println("Response error:", string(errStr))
} else {
// TODO for other error
fmt.Println("Error:", err)
}
}
tads.SetAccessToken(response.AccessToken)
}

设置调用环境、Access Token

package main

import (
"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
)

func main() {
accessToken := "YOUR ACCESS TOKEN"
tads := ads.Init(&config.SDKConfig{
AccessToken: accessToken,
})
// 默认访问沙箱环境,如访问正式环境,请调用tads.UseProduction()
tads.UseSandbox()
}

调用API接口

package main

import (
"encoding/json"
"fmt"
"net/http"

"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
"github.com/tencentad/marketing-api-go-sdk/pkg/errors"
"github.com/tencentad/marketing-api-go-sdk/pkg/model"
)

type UserActionsAddExample struct {
TAds *ads.SDKClient
AccessToken string
Data model.UserActionsAddRequest
}

func (e *UserActionsAddExample) Init() {
e.AccessToken = "YOUR ACCESS TOKEN"
e.TAds = ads.Init(&config.SDKConfig{
AccessToken: e.AccessToken,
IsDebug: true,
})
e.Data = model.UserActionsAddRequest{
AccountId: int64(0),
Actions: &[]model.UserAction{{
ActionTime: int64(1591616815),
UserId: &model.ActionsUserId{
HashImei: "YOUR USER IMEI",
},
ActionType: model.ActionType_CUSTOM,
CustomAction: "YOUR CUSTOM ACTION TYPE",
}},
UserActionSetId: int64(0),
}
}

func (e *UserActionsAddExample) RunExample() (interface{}, http.Header, error) {
tads := e.TAds
// change ctx as needed
ctx := *tads.Ctx
return tads.UserActions().Add(ctx, e.Data)
}

func main() {
e := &UserActionsAddExample{}
e.Init()
response, headers, err := e.RunExample()
if err != nil {
if resErr, ok := err.(errors.ResponseError); ok {
errStr, _ := json.Marshal(resErr)
fmt.Println("Response error:", string(errStr))
} else {
fmt.Println("Error:", err)
}
}
fmt.Println("Response data:", response)
fmt.Println("Headers:", headers)
}

调试和查看API接口日志

package main

import (
"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
)

func main() {
accessToken := "YOUR ACCESS TOKEN"
ads.Init(&config.SDKConfig{
AccessToken: accessToken,
IsDebug: true,
DebugFile: "YOUR LOG FILE PATH",
})
}

对于返回的 Json 取严格模式校验

package main

import (
"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
)

func main() {
accessToken := "YOUR ACCESS TOKEN"
ads.Init(&config.SDKConfig{
AccessToken: accessToken,
IsStrictMode: true
})
}

如果返回值中包含不认识的属性,会抛 ResponseStrictError


关闭SDK上报

目前SDK上报信息为您的服务器版本和 Go 版本信息,为了帮助您更好地定位使用上的问题,建议开启上报,如需关闭请参考如下配置。

package main

import (
"github.com/tencentad/marketing-api-go-sdk/pkg/ads"
"github.com/tencentad/marketing-api-go-sdk/pkg/config"
)

func main() {
accessToken := "YOUR ACCESS TOKEN"
ads.Init(&config.SDKConfig{
AccessToken: accessToken,
SkipMonitor: true,
})
}
该内容是否有帮助?