投票程序-微信打开投1票算1票,但APP中打开投一票算10票

微信打开投1票算1票,但APP中打开投一票算10票

做投票程序,为了推广APP需要设置APP中投票比微信投票收益更大。具体的是,微信打开投1票算1票,但APP中打开投一票算10票。这样用户在APP中投票获得的票数更多。

流程规划

打开HTML5
HTML5内容正常显示(不管登录或未登录,还是微信与APP打开,都可以先展示内容)
点击投票按钮
js判断打开方式
如果 (微信打开){
    全局变量是否有unionid参数
    如果(有unionid){
        ajax调用投票接口,传入unionid,被投票用户
        [后端]先判断用户表是否有unionid参数,无就返回给前端"unionid不存在",有就投票成功票数增加1
        前端判断返回是否投票成功
        如果(投票成功){
            弹出提示,投票成功
        } 如果 (unionid不存在){
            弹出提示,用户信息错误,并清除全局变量中的unionid
        } 如果 (投票失败){
            弹出提示,投票失败
        }
    } 如果 (无unionid){
        判断地址栏中有无CODE参数
        如果(无code参数) {
            跳转到获取code
        } 如果(有code参数) {
            ajax调用服务端接口获取unionid([后端]服务端记录unionid)
            将unionid存入全局变量
        }
    }
} 如果(APP打开){
    全局变量是否有access_token参数
    如果(有access_token){
        ajax调用投票接口,传入access_token,被投票用户
        [后端]先判断用户表是否有access_token参数,无就返回给前端"access_token不存在",有就投票成功票数增加10
        前端判断返回是否投票成功
        如果(投票成功){
            弹出提示,投票成功
        } 如果 (access_token不存在){
            弹出提示,用户信息错误,并清除全局变量中的access_token
        } 如果 (投票失败){
            弹出提示,投票失败
        }
    } 如果 (无access_token){
        判断cookie中是否有登录了的access_token
        如果(有access_token) {
            ajax调用服务器接口获取用户uid([后端]服务端记录uid,access_token)
            将uid,access_token记录到全局变量
        } 如果(无access_token){
            弹出提示,请登录APP
        }
    }
} 如果(其他方式打开) {
    弹出框提醒下载APP
}

H5识别是微信打开还是APP打开

function checkAgent(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.indexOf('micromessenger') !== -1){
        return 'wx'; // 使用微信打开h5
    } else if (ua.indexOf('cpsapp') !== -1) {
        return 'app'; // 使用APP打开h5
    } else {
        return 'other'; // 其他浏览器打开,建议做一个单独宣传页面,提供APP下载通道
    }
}

微信打开获取用户标识

参考微信网页授权,按微信提供的步骤获取即可

APP打开获取用户标识

应用第三方的cookie库
使用第三方库获取http的cookie中的access_token字段信息
ajax调用接口POST:http://xxx.cn/api/v1/auth/auth/accesstoken传入参数access_token
调用成功,如果返回的存在access_token且uid>0表示access_token有效,如果返回access_token且uid=0表示无效
注意:ajax调用如果非同源需要做跨域

此处评论已关闭