Bmob云-Serverless-开发公众号邀请返利

magic
2016-08-09 / 0 评论 / 2,715 阅读 / 正在检测是否收录...

Bmob后端云 公众号邀请返利开发

APP里有个注册页面,希望互相转发微信,邀请返利。 为了方便传播,注册页面单独用H5页面实现。 为了提高邀请用户质量,提高邀请用户的有效性,我们强制要求微信里面打开才能注册。所以基于公众号开发。 为了快速开发,这里使用Bmob云Serverless 里的Faas服务与文件CDN存储服务。

1.准备材料

  1. 公众号
  2. Bmob云Serverless
  3. 如果想用自己域名,备案好的域名

2.设置公众号

一、设置AppSecret值

开发者ID(AppID)

开发者密码(AppSecret)

二、设置白名单

IP白名单
image.png

三、设置授权域名

接口权限,登陆,找到网页授权域名

四、设置调试微信开发者

开发者工具-》web开发者工具 【这个跟小程序一样的工具】,添加微信到开发者,最多可以绑定50个
image.png

3.开发过程

一、注册Bmob账号

二、创建一个应用

image.png

三、点击进入云函数

编写微信获取用户昵称代码
image.png

四、新建云函数

云函数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);
    
  });
}
}                                                                                    

五.运行流程介绍

image.png

用户打开一个url,这个url打开后会提示用户是否授权,同意后跳转到自己的网址,并带上code。

(URL地址)https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxbafdda995607cc&redirect_uri=https%3a%2f%2fgoldenage.xxxxx.com%2f&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

redirect_uri参数关键:指定统一授权后打开的网址,接下来就1步,通过code拿到openid。上面函数getOpenId就可以拿到openid,如果需要昵称头像,可以调用第二个云函数getUserInfo

https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140842&t=0.35600785609885244#3)

六.如何调用

image.png

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,环境,微信设置好,一个函数,暴露接口就可以实现。

前端网页调用效果截图:
image.png

1

评论 (0)

取消