这个教程想写很久了,但是由于自己无下限的拖延症所以拖到了现在才写。虽然淘宝客现在做确实有点晚了,不过在自己的小程序多加一个页面的事,似乎也并没啥的,万一有点收益也是好的。何况淘宝客也没有说就真的做不了了,只要有心,还是可以做一做的。
这次教程是在云函数中使用官方提供的sdk,获取到淘宝客的数据从而达到优惠券页面的显示,云函数用的是node.js,如果会在云函数中使用,那么也可以自己写一个基于node.js的API供自己使用,无论是网站、APP、小程序都可以使用了。
下载官方SDK
这个就不多做介绍了,直接在后台下载就可以了。由于是云开发,所以我们要下载那个node.js版的SDK。如下图所示:
包内有很多文件,examples文件夹中还有几个演示文件,不过如果在小程序中使用的话我们使用不到这些的,看看样子就可以了。然后我们将整个包放在你设置好的云函数文件夹中,这里可能会有一个冲突,因为云函数本身有一个index.js文件,可以把原先的那个删除掉,因为我下面会教大家如何去重写一个有用的index.js。
安装模块
因为是node文件,所以这个SDK也需要安装一个模块,不过package.json已经写好了,所以我们只要初始化一下就行了,单击云函数文件夹,打开终端,然后输入指令:
npm i
等待安装完成,这个SDK就算是集成到云函数里面了,没啥难的,就是把他放在云函数文件夹里就可以了。
云函数代码
因为涉及异步输出,所以我将几个API进行了简单的Promise封装,主要是为了之后取值方便,将API主要代码封装在一个文件里,调用方便,而且使得index.js文件看起来也不那么乱。因为只是演示,所以这里只通过两个API做演示(一个精选物料的API,一个淘口令生成API)。在lib文件夹下新建一个utils.js文件,用来封装API。
代码如下:
var ApiClient = require('./api/topClient.js').TopClient;
var dingtalkClient = require('./api/dingtalkClient.js').DingTalkClient;
var tmcClient = require('./tmc/tmcClient.js').TmcClient;
//上面是需要用到的SDK的引用
var client = new ApiClient({
'appkey': '',
'appsecret': '',
'url': 'http://gw.api.taobao.com/router/rest'
});
//上面是你的淘宝联盟的key和secret
module.exports = {
//获取精选物料信息,其实可以将参数弄成一个数组,
// 因为这个API参数很多,但是我只想要这三个,所以这么写的。
materiel(adzone_id, material_id,page_no) {
return new Promise(function(resolve) {
setTimeout(function() {
client.execute('taobao.tbk.dg.optimus.material', {
'adzone_id': adzone_id, //推广的pid,最后一组数
'material_id': material_id, //选品id
"page_no":page_no //页数
}, (err, res) => {
if (!err) {
resolve(res)
} else {
console.log(err)
};
})
}, 10);
});
},
//淘口令生成
wdCreate(url){
return new Promise(function(resolve) {
setTimeout(function() {
client.execute('taobao.tbk.tpwd.create', {
'text':'小创果',
'url':url
}, (err, res) => {
if (!err) {
resolve(res)
} else {
console.log(err)
};
})
}, 10);
});
}
}
这样就可以了,我们在云函数中进行引用。index.js代码如下:
'use strict';
var utils = require('./lib/utils.js');
exports.main = async (event, context) => {
let materiel = await utils.materiel('111290950263',"3756",event.page_no)
let materielList = materiel.result_list.map_data
return {
materielList:materielList
}
};
这里获取的数据中不包含淘口令,所以我们可以在获取数据后直接生成对应的淘口令(这样可能会导致云函数运行时间较长),也可以在客户端通过用户的操作再进行淘口令的获取。将下面的代码放在return之前就可以了。
for (var i=0;i<materielList.length;i++) {
let shareUrl = "https:" +materielList[i].coupon_share_url
materielList[i].wdCreate = await utils.wdCreate(shareUrl)
}
大致这样就是大功告成了,扫码下方小程序码下载云函数完整演示代码: