巨量千川M-API开端:账户下的短视频计划数据获取(一)

        啦啦啦,巨量千川的M-API的实践在上一份使用教程之后正式开始记录设计思路及具体步骤啦!详细的其实还是要看一下巨量引擎工作台中的开发文档API接口 - 商业开放平台,本文所讲述的代码片段基本都是根据需求进行的改版,可以直接套用的代码段哦~

        上次有小伙伴私信问我回调地址具体怎么设置,这里统一回复一下有疑问的小伙伴,随便设置!是的,你没看错,你可以随便打一个网址,类似于www.xiaobai.com这样的URL,即使他没有被注册,也是能够获取到auth_code验证码的。他会直接体现在网址中,只需要手动复制一下就可以啦!

        巨量千川开发者文档API接口 - 商业开放平台

        首先先剖析一下这部分的开发思路:首先账户信息这一块肯定是首要获取的,巨量千川平台所有的账户又都是绑定到抖音小店的,而且授权也是根据小店来进行授权的,这就导致我们想要获取到账户信息的话,首先要查看小店端的接口是否有可以返回账户信息的。之后拿到绑定在小店下面的账户ID,再根据账户ID去获取所需要的账户名称,这样最基础的账户部分的信息就获取完毕了,当然,如果还需要其他账户相关的字段数据,也只需要加请求参数就可以了。获取账户信息之后就可以发起具体的计划请求啦~后面只需要设置自己需要的参数就可以成功返回了。

        首先是老样子,获取到最新的auth_code,和需要获取数据的小店代码,我这边就不过多展示了。(在巨量引擎首页点击生态服务,找到开发者,即可进入,选择巨量千川应用,然后点击授权跳转,就可以拿到auth_code。授权完毕后刷新网页,就可以在下面看到授权的小店,复制小店ID成一个数组就好了。所有的参数都要求是字符串形式的哦,直接复制的需要加上单引号)

        正式开始:为了避免需要人工重复的点击授权申请,巨量引擎也给了一个refresh_token用于超时刷新。首先使用auth_code外部验证码获取到内部access_token值和用于刷新access_token的refresh_token。请求参考代码我放在下面啦!

#!获取access_token值
def get_access_token(APP_ID,secret,auth_code):
    open_api_url_prefix = 'https://ad.oceanengine.com/open_api/'
    uri = 'oauth2/access_token/'
    url = open_api_url_prefix + uri
    data = {
        'app_id': APP_ID,
        'secret': secret,
        'grant_type': 'auth_code',
        'auth_code': auth_code
    }
    #发起请求
    rsp = requests.post(url, json=data)
    #返回值是json字符串,所以必须要把他解码才可以成正常的字典才可以继续操作
    rsp_data = rsp.json()
    #查看返回值是否正确
    #print(rsp_data)
    return rsp_data


#!刷新access_token
def refresh_access_token(APP_ID,secret,refresh_token):
    open_api_url_prefix = 'https://ad.oceanengine.com/open_api/'
    uri = 'oauth2/refresh_token/'
    refresh_token_url = open_api_url_prefix + uri
    data = {
        'appid': APP_ID,
        'secret': secret,
        'grant_type': 'refresh_token',
        'refresh_token': refresh_token,
    }
    rsp = requests.post(refresh_token_url, json=data)
    rsp_data = rsp.json()
    #print(rsp_data)
    return rsp_data

        很好,现在已经完成了最重要的两个方法的撰写!接下来就按部就班的进行填参数就可以了。那么首先要写一个调用函数去判断当前的access_token值是否可用,根据开发文档的返回参数可以通过message的值进行判断,如果是"OK"那就是正常返回,那么我们就把最新的access_token和refresh_token给return出来,如果不是那么返回就有问题啦!(如果是第一次使用的话,没有refresh_值,那么只能重新获取auth_code重新获取一遍咯~这也是没办法的事情)返回错误的话就调用refresh_token去发起刷新access_token请求,然后再把返回值return出来。(在开发过程中代码优先级问题一定要注意!)


#!获取到最新的access_token和refresh_token
def get_token(rsp_data,refresh_token):
    if rsp_data['message'] == 'OK':
        access_token=rsp_data['data']['access_token']
        refresh_token=rsp_data['data']['refresh_token']
        return access_token,refresh_token
    else :
        get_refresh_yn=input('是否马上更新y/n:')
        if get_refresh_yn == 'y':
            rsp_data=refresh_access_token(APP_ID,secret,refresh_token)
            #print(rsp_data)
            if rsp_data['message'] == 'OK':
                access_token=rsp_data['data']['access_token']
                refresh_token=rsp_data['data']['refresh_token']
                return access_token,refresh_token
            if rsp_data['message'] == 'refresh_token已过期':
                print('refresh_token过期啦!请重新授权!')
            else:
                print('授权码已失效,请重新获取!')

        请求成功,那么在你的终端上就会把access_token和refresh_token打印出来啦!一定要记得及时更新本地代码中refresh_token的值。

        下一步就是根据小店ID获取到绑定在小店下的账户ID啦!(因为开发文档其实是有说明的,一次最多绑定十个不同的小店,但是经过本人验证,其实多几家店也可以,只是容易access_token过期,需要重新验证auth_code)

#获取店铺下的所有广告账户ID
def get_advertiser(access_token,shop_id):
    open_api_url_prefix = 'https://ad.oceanengine.com/open_api/'
    uri = 'v1.0/qianchuan/shop/advertiser/list/'
    url = open_api_url_prefix + uri
    params = {
        'shop_id':shop_id,
    #   'page': 1,
        'page_size': 100,
    }
    headers = {'Access-Token': access_token}
    rsp = requests.get(url, json=params, headers=headers)
    rsp_data = rsp.json()
    return rsp_data

        这样就会返回所有的账户ID啦!然后我们进行一个循环取数,分别把账户ID取出来进行账户(广告主)详情查询,就可以得到我们需要的账户名啦!

#获取账户名
def get_advertiser_info(access_token,advertiser_id):
    open_api_url_prefix = 'https://ad.toutiao.com/open_api/'
    uri = '2/advertiser/public_info/'
    url = open_api_url_prefix + uri
    params = {
        'advertiser_ids': [advertiser_id]
    }
    headers = {'Access-Token': access_token}
    rsp = requests.get(url, json=params, headers=headers)
    rsp_data = rsp.json()
    #print(rsp_data)
    advertiser_name = rsp_data['data'][0]['name']
    return advertiser_name

那么具体怎么循环,以及具体的计划数据如何请求~看下一篇~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值