Go SDK 使用指南

腾讯广告 Marketing API(以下简称 API) Go SDK 提供了 Token 获取、请求封装、响应解释等功能,以本地化方式轻松完成 API 的调用和结果的获取,旨在帮助开发者快速搭建投放管理系统。

使用条件

  1. 使用 SDK 需要首先注册成为腾讯广告开发者,请参考开发者快速入门文档

  2. 使用 SDK 需要先拥有 API 的访问权限,所有 SDK 的使用与应用拥有的权限组相关联

  3. Go SDK 需要依赖 1.11 版本及以上

如何安装

推荐使用 go mod 的方式获取

使用 go mod 获取

其中的 ${VERSION} 需要替换成要使用的版本,如 v1.7.45,具体版本号可查看相应的 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

如何使用

SDK 数组参数调用的方法名与 API 接口一一对应,如 adgroups/get 接口就对应 tads.Adgroups().Get()方法
注意:model 中的所有基本数据类型均为指针类型, 例如:*string, *bool, *int64, *float64

获取 Access Token

注:本示例适用于授权时通过 Authorization Code 获取 Access Token 和 Refresh Token
package main

import (
    "encoding/json"
    "fmt"
    "github.com/antihax/optional"
    "github.com/tencentad/marketing-api-go-sdk/pkg/ads/v3"
    "github.com/tencentad/marketing-api-go-sdk/pkg/api/v3"
    "github.com/tencentad/marketing-api-go-sdk/pkg/config/v3"
    "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/v3"
    "github.com/tencentad/marketing-api-go-sdk/pkg/config/v3"
)

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

调用 API 接口

package main

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

func main() {
    accessToken := "YOUR ACCESS TOKEN"
    tads := ads.Init(&config.SDKConfig{
        AccessToken: accessToken,
    })
    // your account id
    accountId := int64(0)
    field := "last_modified_time"
    operator := "EQUALS"
    adgroupsGetOpts := &api.CampaignsGetOpts{
        Filtering: optional.NewInterface([]model.FilteringStruct{model.FilteringStruct{
            Field:&field,
            Operator:&operator,
            Values:[]string{"1708520382"},
        }}),
    }
    ctx := *tads.Ctx
    // oauth/token 接口即对应 Adgroups().Get()方法
    response, _, err := tads.Adgroups().Get(ctx, accountId, adgroupsGetOpts)

    if err != nil {
        if resErr, ok := err.(errors.ResponseError); ok {
            // When Api returns an error
            errStr, _ := json.Marshal(resErr)
            // TODO for api error
            fmt.Println("Response error:", string(errStr))
        } else {
            // When validation fails or other local issues
            // TODO for other error
            fmt.Println("Error:", err)
        }
    }
    fmt.Println(response)
}

调试和查看 API 接口日志

package main

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

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/v3"
    "github.com/tencentad/marketing-api-go-sdk/pkg/config/v3"
)

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/v3"
    "github.com/tencentad/marketing-api-go-sdk/pkg/config/v3"
)

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

问题建议与反馈

如果您在使用 SDK 过程中有任何问题与建议,请随时登录开发者官网,点击右下角的"咨询"按钮,与我们的客服支持人员联系