第三方微信登录

第三方微信登录

https://mp.weixin.qq.com/s/cTaIv28GyFZvc-Gj15TYnA

1、首先引入

第三方微信登录

2、使用auth方法

第三方微信登录

3、配置

第三方微信登录

 

3 – 1 首页需要到微信开放平台去申请审核  https://open.weixin.qq.com/

第三方微信登录

 

注:如果需要ios 和 安卓 使用,请注意上图 将ios和android应用都勾选上

4、auth方法成功之后,使用getToken方法

第三方微信登录

 

5、在使用getToken方法成功后,使用getUserInfo方法

第三方微信登录

 

将获取到的用户信息按需要逻辑处理


附上小编的项目代码
小编的代码有处理是否绑定的逻辑以及登录等,大家只需参考wx登录部分即可
html部分

<div class="aui-col-xs-2"  style="text-align: center;" tapmode οnclick="wxauth()">
    <i class="iconfont icon-liaotian icon_bg2"></i>
    <div class="aui-grid-label"  style="display:block;margin-top:10px;">微信</div></div>

js部分

//微信登录
    function wxauth() {
        api.showProgress({
            style: 'default',
            animationType: 'fade',
            title: '',
            text: '启动中...',
            modal: false
        });
        var wx = api.require('wx');
        wx.auth({
            apiKey: 'wx***********'
        }, function(ret, err) {
            api.hideProgress();
            if (ret) {
                if (ret.status) {
                    var code = ret.code;
                    getToken(code);
                } else {
                    api.toast({
                        msg: '错误',
                        duration: 2000,
                        location: 'middle'
                    });
                }
            } else {
                switch(err.code) {
                    case -1:
                        api.toast({
                            msg: '未知错误',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 1:
                        api.toast({
                            msg: '用户取消',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 2:
                        api.toast({
                            msg: '用户拒绝授权',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 3:
                        api.toast({
                            msg: '当前设备未安装微信客户端',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                }
            }
        });
    }

/**
     * [getToken 获取用户token]
     * @param  {[type]} code [授权成功后返回code 参数]
     * @return {[type]}      [description]
     */
    function getToken(code) {
        var wx = api.require('wx');
        wx.getToken({
            apiKey: '',
            apiSecret: '',
            code: code        }, function(ret, err) {
            if (ret) {
                if (ret.status) {
                    var accessToken=ret.accessToken;
                    var dynamicToken=ret.dynamicToken;
                    var openId=ret.openId;
                    getUserInfo(accessToken,openId);
                } else {
                    api.toast({
                        msg: '错误',
                        duration: 2000,
                        location: 'middle'
                    });
                }
            } else {
                switch(err.code) {
                    case -1:
                        api.toast({
                            msg: '未知错误',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 1:
                        api.toast({
                            msg: 'apiKey值为空或非法',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 2:
                        api.toast({
                            msg: 'apiSecret值为空或非法',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 3:
                        api.toast({
                            msg: 'code值为空或非法',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 4:
                        api.toast({
                            msg: '网络超时',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                }
            }
        });
    }

/**
     * [getUserInfo 获取用户信息]
     * @param  {[type]} accessToken [getToken 接口或 refreshToken 接口成功获取的 accessToken 值]
     * @param  {[type]} openId      [getToken 接口或 refreshToken 接口成功获取的 openId 值]
     */
    function getUserInfo(accessToken,openId) {
        var wx = api.require('wx');
        wx.getUserInfo({
            accessToken: accessToken,
            openId: openId        }, function(ret, err) {
            if (ret) {
                if (ret.status) {
                    var openid=ret.openid,
                          unionid = ret.unionid,
                          nickname=ret.nickname,
                          head_pic=ret.headimgurl,
                          source='weixin';
                    api.ajax({
                        url: domainName + '/index.php?g=User&m=Api&a=thirdLogin',
                        method: 'post',
                        data: {
                            values: {
                                openid: openid,
                                unionid: unionid,
                                nickname: nickname,
                                head_pic: head_pic,
                                source: source                            }
                        }
                    }, function(ret, err) {
                        if (ret) {
                            if (ret.msg == '0') { //已经存在该用户信息
                                if (ret.binding_status == '1') {   /*1:未绑定 2已绑定*/
                                    //未绑定,到绑定页面
                                    api.openWin({
                                        name: 'user_binding_win',
                                        url: './user_binding_win.html',
                                        pageParam: {
                                            openid: openid,
                                            source: source                                        }
                                    });
                                } else {
                                    //已绑定,到登录页面
                                    userInfoAll(openid,source);
                                    api.openWin({
                                        name: 'index',
                                        url: '../main.html'
                                    });

                                }
                            } else if (ret.msg == '1'){ //添加用户信息成功
                                api.openWin({
                                    name: 'user_binding_win',
                                    url: './user_binding_win.html',
                                    pageParam: {
                                        openid: openid                                    }
                                });
                            } else if (ret.msg =='2'){
                                api.toast({
                                    msg: '添加用户失败',
                                    duration: 2000,
                                    location: 'bottom'
                                });
                            } else {
                                api.toast({
                                    msg: '未知错误',
                                    duration: 2000,
                                    location: 'bottom'
                                });
                            }
                        } else {
                            api.toast({
                                msg: '未知错误',
                                duration: 2000,
                                location: 'middle'
                            });
                        }
                    });
                } else {
                    api.toast({
                        msg: '错误',
                        duration: 2000,
                        location: 'middle'
                    });
                }
            } else {
                switch(err.code) {
                    case -1:
                        api.toast({
                            msg: '未知错误',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 1:
                        api.toast({
                            msg: 'accessToken 过期',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 2:
                        api.toast({
                            msg: 'openId非法',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 3:
                        api.toast({
                            msg: 'openId值为空',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 4:
                        api.toast({
                            msg: 'accessToken值为空',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 5:
                        api.toast({
                            msg: 'accessToken非法',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                    case 6:
                        api.toast({
                            msg: '网络超时',
                            duration: 2000,
                            location: 'middle'
                        });
                        break;
                }
            }
        });
    }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112764.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月30日 下午6:00
下一篇 2021年10月30日 下午7:00


相关推荐

  • esn是什么意思_IMEI MEID

    esn是什么意思_IMEI MEIDESN(ElectronicSerialNumbers):电子序列号。在CDMA系统中,是鉴别一个物理硬件设备唯一的标识。也就是说每个手机都用这个唯一的ID来鉴别自己,就跟人的身份证一样。一个ESN有32bits,也就是32/8=4bytes。随着CDMA移动设别的增多,ESN已经不够用了,所以推出了位数更多的MEID。ESN用8位的16进制来表示,如0x801EA066。…

    2022年8月30日
    5
  • STL源码解析之vector自实现

    1.vector实现框架2.空间配置器空间配置器方面的内容在之前的博客已进行详细说明,查看->STL空间配置器解析和实现.3.内存基本处理工具(1)对象构造(2)Destroy(

    2021年12月28日
    39
  • 本以为java语言很难学,其实就学完下面这些知识,就能理解了

    本以为java语言很难学,其实就学完下面这些知识,就能理解了刚毕业,找工作,很多人都面临相同的问题。自己能做什么?什么工作既舒服,福利又好(不存在的,除非银行你家开的)。然后社会是个发展的社会,现代人的生活越来越智能,生活中其实充满“技术”!!!所以,在各个岗位中,其实编程类的岗位工资是平均水平最高的。可以加你Java资料分享群java《学习》+交流523401738作为5大编程语言的JAVA是当今最受各大公司的青睐,很多项目,很多工程都需要用到java…

    2022年7月8日
    20
  • 四阶行列式的计算方法余子式_三阶行列式降价

    四阶行列式的计算方法余子式_三阶行列式降价四阶行列式的计算;N阶特殊行列式的计算(如有行和、列和相等);矩阵的运算(包括加、减、数乘、乘法、转置、逆等的混合运算);求矩阵的秩、逆(两种方法);解矩阵方程;含参数的线性方程组解的情况的讨论;齐次、非齐次线性方程组的求解(包括唯一、无穷多解);讨论一个向量能否用和向量组线性表示;讨论或证明向量组的相关性;求向量组的极大无关组,并将多余向量用极大无关组线性表示;将无关组正交化、单位化;求方阵的特…

    2025年5月27日
    4
  • elk查询语法_elk配置

    elk查询语法_elk配置记录了ElasticSearch、Logstash和Kibana的简单安装方法和ES的常用查询操作命令,Logstash还未整理,去官网查比较全。ElasticSearch安装#下载安装包wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.1-linux-x86_64.tar.gz#解压修改文件夹名tar-zxvfelasticsearch-7.2.1-linux-x86_

    2025年6月26日
    2
  • 从头开始建网站(三)DNS

    从头开始建网站(三)DNS

    2022年1月2日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号