微信授权、解决方法、拿到微信的昵称、头像

1、需要授权页面(访问页面的时候加载微信提供的API拿到CODE值,然后就行CODE拿到APPID)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telphone:yes">
<meta name="keywords" content="">
<meta name="description" content="">
<title>助力减学费活动</title>
<link rel="stylesheet" type="text/css" href="/assets/css/style_activity.css">
<script src="/assets/cdn/jquery.min.js"></script>
<script src="/assets/js/ag-ajax.js"></script>
</head>
<body class="invite-reduce-bg">
    <img src="/assets/images/active_bg.jpg">
    <div class="invite-result-wrap">
        <div class="reduce-result relative">
            <img src="/assets/images/recommand-result.png" class="result-img padding-top-1">
            <span class="result-text short-text margin-space">已为{{my_helper}}助力 {{reduceCount}} 元</span>
            <div v-if="reduceCountArr.length === 58">
           <a href="success_exchange.html" class="link-package-btn">{{name}}<i class="right-arrow-icon"></i></a>
           <em class="decoration-icon"></em>
            </div>
        </div>
        <div class="result-group">
            <!-- 最多放四个 -->
            <h3 class="result-group-top"><span class="long-title-icon">好友助力排行榜</span></h3>
            <ul class="result-group-middle">
                <li class="result-item clearfix flex align-items-center" v-for="(value, index) in reduceCountArr.slice(0,num)">
                    <div class="user-wrap float-left flex flex-start">
                        <img :src="value.res1" class="user-tx">
                        <div>
                            <p class="user-name">{{value.friend_name}}</p>
                            <p class="user-date">{{value.help_time}}</p>
                        </div>
                    </div>
                    <div class="reduce-count float-left flex align-items-center">+{{value.help_money}}元</div>
                </li>
            </ul>
            <span class="result-group-bottom" v-if="reduceCountArr.length >= 4" @click="loadMore">{{loadMoreText}}</span>
        </div>
        <div class="continue-invite-wrap">
            <a href="invite_reduce_rules.html" class="link-rule-btn margin-space">活动规则<i class="right-arrow-icon"></i></a>
            <img src="/assets/images/logo.png">
            <div class="continue-invite-btn flex align-items-center">
                <a :href="url + cid"></a>
            </div>
        </div>
    </div>
</body>
<script src="/assets/js/vue.min.js"></script>
<script src="/assets/js/axios.min.js"></script>
<script>
    var vm = new Vue({
        el: '.invite-result-wrap',
        data: {
            name: '兑换成学费礼包',
            reduceCount: '3.25',
            reduceCountArr: [],
            num: 4,  //每次显示的条数
            i: 1,  //自增
            totalCount: 0,  //点击的次数
            loadMoreText: '加载更多',
            url: 'invite_reduce_me.html?cid=',
            cid: '',
            pageCount: 1,
            my_helper: '',
            text: ''
        },
        mounted: function () {
        var that = this;
        
        this.getInfo();
            this.cid = this.getQuery('cid');
            that.alertTip(this.text);
        },
        methods: {
            getInfo () {
          var cid = this.getQuery('cid'),
          code = this.getQuery('code'),
          urlHead = location.href,
          url = '',
          that = this;
            
            if (!code) {
              location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=填写你自己公众号的appid&redirect_uri='+ encodeURI(urlHead) +'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
              }else{
              console.log(code);
                 //获取发起人信息的接口
              axios.post('接口', {customer_id: cid})
              .then(function(json){
                  console.log(json);
                  })
                  .then(function(json){
                  console.log(6)
                  
                  //console.log(json);
                        console.log(2);
                        console.log(cid);
                        console.log(that.reduceCount);
                        console.log(code);
                        console.log(3);
                        $.post("/a/Bind/addBargain",{code: code , cid: cid, helpmoneys : that.reduceCount},function(json){
                        console.log(json);
                        var data = json.data
                        
that.reduceCountArr = data.slice();
                        
                        that.pageCount = Math.ceil(data.length / 4)
                        
                        that.my_helper = data[0].my_help_name

                        that.text = json.status ? json.message : ('感谢您为<em>'+ that.my_helper +'</em>助力了<i>' + that.reduceCount + '</i>元');
                        
                        that.alertTip(that.text);
 });
 
                        console.log(4)
                        
                  })
                  .catch(function(error){
                  console.log(5)
                  console.log(error);
                  })
              }
            },
            loadMore () {
            this.i++
            if (this.i >= (this.pageCount + 1)) {
            this.loadMoreText = '没有更多了'
            return;
            } else {
            this.num = this.i * 4;
            this.getUserList()
            }
            },
            getQuery (name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg); // 匹配目标参数
            if (r != null)
            return decodeURIComponent(r[2]);
            return null; // 返回参数值
            },
            alertTip: function (content){  //弹出提示页面
            //如果页面有forward_tip组件就更改提示内容,然后进行显示
            if($("#forward_tip").css("display")){
            $("#tip").html(content);
            $("#forward_tip").show();
            return;
            }
            //该页面还没有forward_tip组件就先加上
            var tip = "<div id='forward_tip' style=''>"+
            "<div class='tanchuang'></div>"+
            "<div class='tanchuang_img2'>"+
            "<span class='tip' id='tip'>"+content+"</span>"+
            "<button type='submit' class='tc_btn' id='tc_btn'>确定</button>"+
            "</div>"+
              "</div>";
              
            $("body").append($(tip));
            
            //绑定按钮-隐藏提示框
            $("#tc_btn").click(function(){
            $("#forward_tip").remove();
            })
            }
        }
    });
</script>

</html>

2、拿到COED之后

package com.angroid.wechat;
/*
 * 用户接口
 * 修改备注名、获取用户信息
 */
import java.util.HashMap;
import java.util.Map;


import javax.servlet.annotation.WebFilter;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.angroid.js.JSONResponse;


public class WxUser {

//用户同意授权,获取code
public static JSONObject getCode(){
String url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=拿到自己公众号appid&redirect_uri=invite_reduce.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
return Util.postJson(url, "");

}
//通过code换取网页授权access_token
public static JSONObject access_token(String code){
String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=自己公众号&secret=秘钥&code="+code+"&grant_type=authorization_code";
return Util.postJson(url, null);

}

//刷新access_token(如果需要)
public static JSONObject refresh_access_token(){
String url ="https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=自己公众号&grant_type=refresh_token&refresh_token=REFRESH_TOKEN";
return Util.postJson(url, "");

}
//拉取用户信息(需scope为 snsapi_userinfo)
public static JSONObject snsapi_userinfo(String openid,String acces_token){
String url ="https://api.weixin.qq.com/sns/userinfo?access_token="+acces_token+"&openid="+openid+"&lang=zh_CN";
return Util.postJson(url, null);

}



public static void main(String[] args) {

//String openid = "";//remind
//获取用户信息
Map m = access_token(code);
System.out.println("获取用户信息" + m);

}



}

3、代码实现

public String code;
    public String helpmoneys;
    public String cid;

    public JSONResponse addBargain() {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式  
        String wxcode = c.request.getParameter("wxcode");
        System.out.println("code=" + code + "&cid=" + cid +"&customer_id=" + customer_id + "&helpmoneys=" + helpmoneys);
        JSONObject json = WxUser.access_token(code);
        String openid = json.get("openid").toString();

        System.out.println("openid=" + openid + "&json= " + json");
        JSONObject json2 = WxUser.snsapi_userinfo(json.getString("openid"), json.getString("access_token"));
        System.out.println("json2=" + json2);
        String headimgurl = json2.get("headimgurl").toString();
        System.out.println("headimgurl=" + headimgurl);
        String nickname = json2.get("nickname").toString();
        System.out.println("/a/bind/addBargain:-----:nickname=" + nickname);
        Map<String, Object> dataMaps = new HashMap<>();
//String sqls ="SELECT friend_name,open_id,friend_id FROM gzwx_bargain  WHERE open_id ='"+openid+"' and friend_id =" + cid +" LIMIT 0,1";
        String sqls = "SELECT count(*) as counts FROM gzwx_bargain a WHERE a.open_id ='" + openid + "' and a.friend_id =" + cid;
        Map maps = SQLExecutor.row(sqls);
        System.out.println("/a/bind/addBargain:-----:maps=" + maps);
        String counts = maps.get("counts").toString();
        System.out.println("/a/bind/addBargain:-----:counts=" + counts);
        System.out.println("maps.get(counts)============================" + maps.get("counts"));


        Map<String, Object> datas = new HashMap<>();
        String sqlv = "SELECT count(*) as count FROM gzwx_bargain WHERE  friend_id =" + cid;
        Map m = SQLExecutor.row(sqlv);
        String count = m.get("count").toString();
        System.out.println("判断count:" + count);

        Map<String, Object> dats = new HashMap<>();
        String sqy = "SELECT count(*) as countx FROM gzwx_coupon WHERE  user_id =" + cid;
        Map mm = SQLExecutor.row(sqy);
        String countx = mm.get("countx").toString();
        System.out.println("判断countx:" + countx);

        if (m.get("count").equals("58")) {
            if (mm.get("countx").equals("0")) {
                GzwxCoupon gc = new GzwxCoupon();
                gc.setName(name);
                gc.setCreateTime(df.format(new Date()));
                gc.setStatus(2);
                gc.setUserId(cid);
                try {
                    gc.set();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        if (!m.get("count").equals("58")) {

            if (maps.get("counts").equals("0") && !m.get("count").equals("58")) {
                Map<String, Object> dataMap = new HashMap<>();
                String sql = "SELECT a.name,a.photo FROM crm_customer a WHERE a.id =" + cid;
                Map map = SQLExecutor.row(sql);
                String name = map.get("name").toString();
                String photo = map.get("photo").toString();
                GzwxBargain gzwx = new GzwxBargain();
                gzwx.setFriendId(ValueUtil.toStr(cid)); //拿到分享这的ID
                gzwx.setFriendName("第" + count + "位"); //助力人名字22
                //gzwx.setFriendName(nickname); //助力人名字
                gzwx.setHelpMoney(helpmoneys); //助力金额
                gzwx.setOpenId(openid); //openid
                gzwx.setRes1(headimgurl); //助力人头像
                gzwx.setHelpTime(df.format(new Date()));//时间
                gzwx.setMyHelpId(ValueUtil.toStr(cid)); //发起者ID
                gzwx.setMyHelpName(name); //发起者姓名
                gzwx.setPhoto(photo); //发起者头像
                try {
                    gzwx.set();
                    List<Map> list = c.find("bargain", this);
                    response.data = list;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                response = response.error(-1, "您已对该用户助力了!");
                List<Map> list = c.find("bargain", this);
                response.data = list;
            }
        } else {
            response = response.error(1, "该用户已经集满成功!");
            List<Map> list = c.find("bargain", this);
            response.data = list;
        }
        return response;


    }

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值