Bmob后端云 公众号邀请返利开发
APP里有个注册页面,希望互相转发微信,邀请返利。 为了方便传播,注册页面单独用H5页面实现。 为了提高邀请用户质量,提高邀请用户的有效性,我们强制要求微信里面打开才能注册。所以基于公众号开发。 为了快速开发,这里使用Bmob云Serverless 里的Faas服务与文件CDN存储服务。
1.准备材料
- 公众号
- Bmob云Serverless
- 如果想用自己域名,备案好的域名
2.设置公众号
一、设置AppSecret值
开发者ID(AppID)
开发者密码(AppSecret)
二、设置白名单
IP白名单
三、设置授权域名
接口权限,登陆,找到网页授权域名
四、设置调试微信开发者
开发者工具-》web开发者工具 【这个跟小程序一样的工具】,添加微信到开发者,最多可以绑定50个
3.开发过程
一、注册Bmob账号
二、创建一个应用
三、点击进入云函数
编写微信获取用户昵称代码
四、新建云函数
云函数getOpenId 获取用户openid,拿到openid调用getUserInfo获取用户信息云函数
function onRequest (request, response, modules) {
var code = request.body.code ? request.body.code : '011jOWiN0vmFa42ynziN0B6bjN0jOWir'
//获取数据库对象
var db = modules.oData;
var functions = modules.oFunctions;
//http请求方式: GET
var appid = '';
var secret = '';
var url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appid + '&secret=' + secret + '&code=' + code + '&grant_type=authorization_code';
//获取Http模块
var http = modules.oHttp;
//发起Get请求
http(url, function (error, res, body) {
if (!error && res.statusCode == 200) {
//写入数据库
var resultObject = JSON.parse(body);
//如果返回错误则打印
if (resultObject.errcode) {
response.send(resultObject);
}
functions.run({
"name": "getUserInfo",
"data": { "openid": resultObject.openid, "access_token": resultObject.access_token }
}, function (err, data) {
//回调函数
response.send(data);
});
}
});
}
getUserInfo云函数
function onRequest (request, response, modules) {
var db = modules.oData;
var openid = request.body.openid || 'ol2Ey0tePs0fdFdVRZKqzu50_83c';
var access_token = request.body.access_token || 'xxxx';
getUserInfoMp(openid, access_token);
function getUserInfoMp (openid, access_token) {
var http = modules.oHttp;
http('https://api.weixin.qq.com/sns/userinfo?access_token=' + access_token + '&openid=' + openid + '&lang=zh_CN', function (error, res, body) {
if (!error && res.statusCode == 200) {
var at = JSON.parse(body);
response.send(body);
}
response.send(body);
});
}
}
五.运行流程介绍
用户打开一个url,这个url打开后会提示用户是否授权,同意后跳转到自己的网址,并带上code。
redirect_uri参数关键:指定统一授权后打开的网址,接下来就1步,通过code拿到openid。上面函数getOpenId就可以拿到openid,如果需要昵称头像,可以调用第二个云函数getUserInfo
https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140842&t=0.35600785609885244#3)
六.如何调用
https://cloud.bmob.cn/19b475f87c366db2/getOpenId
方法:post
参数:code: 微信code
返回:
{"openid":"ol2Ey0tePs0fdFdVRZKqzu50_83c","nickname":"magic","sex":1,"language":"zh_CN","city":"广州","province":"广东","country":"中国","headimgurl":"http:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/DYAIOgq83epySXbnQqg4MialjffKNKbxj42prvL2aIaIFbs3pj7svlT4gbQeQPbricZNBGYWfv1zcOo86fjwc99Q\/132","privilege":[]}}
总结:
相比自己服务器开发优势,成本低,速度快。 基于Serverless,的Faas 只需要一个函数,即可实现用户openid功能。如果熟悉,整个微信开发不需要10分钟。这里有个用户点击授权的页面是HTML的,这个HTML我们可以用CDN云存储,把静态html页面保存到文件里面,支持绑定自己域名,让用户访问。 整个开发,不需要购买服务器,ip,环境,微信设置好,一个函数,暴露接口就可以实现。
前端网页调用效果截图:
评论 (0)