uniapp微信小程序--微信登录

<template>
        <!--用户登录之后再获取手机号-->
    <view class="container" style="position:fixed;left:0;right:0;background: url(../xcximg/img.jpg) no-repeat;background-size: cover;">
        <view class="btns">
            <button type="default" open-type="getUserInfo" @getuserinfo="getUserInfo" class="wx">微信登录</button>
            <view @click="login(1)" class="tels">手机号登录</view>
        </view>
        
        <view class="tel_cont" v-show="isShowTel">
            <view class="mask"></view>
            <view class="tel">
                <view><text class="bold font30 color_black mr20">xxx</text>申请</view>
                <view class="bold font30 color_black mt30">获取您的手机号</view>
                <view class="tel_btns dflex center" style="">
                    <button type="default" class="wxbtn cancel" @click="cancel()">取消</button>
                    <button type="default" open-type="getPhoneNumber" class="wxbtn sure" @getphonenumber="getPhoneNumber">允许</button>
                </view>
            </view>
        </view>
    </view>
</template>

<script>
    import {checkTelNum} from '../../common/js/common.js'
    import {mapState,mapMutations} from 'vuex'
    let url = null;
    export default {
        data() {
            return {
                tel: '',
                pwd: '',
                isShowTel: false,
                userinfo:[],
                phone:[],
                isUser: false
            }
        },
        onShow() {
            
        },
        onLoad() {
            this.openid = '';
            this.session_key = '';
            url = uni.getStorageSync('currentUrl');
            this.getLoginCode()
        },
        methods: {
            ...mapMutations(['getLogin','getWxLogin']),
            cancel(){
                this.isShowTel = false;
                uni.removeStorage({
                    key: 'isUser'
                })
            },
            //存储信息
            saveWxdata(){
                this.$httpRequest('POST','api接口',{
                    phone: JSON.stringify(this.phone),
                    userinfo: JSON.stringify(this.userinfo),
                    openid: this.openid,
                    session_key: this.session_key
                }).then(res=>{
                    
                })
            },
            getPhoneNumber(e){
                //console.log('手机号',e)
                if(!e.detail.encryptedData){
                    //只授权了用户信息,没有授权手机号
                    uni.removeStorage({
                        key: 'isUser'
                    })
                }else{
                    //用户信息、手机号均授权,才授权成功跳转页面
                    let {encryptedData,iv} = e.detail;
                    this.phone.push({
                        encryptedData: encryptedData,
                        iv: iv
                    })
                    uni.switchTab({
                        url: url
                    })
                    this.saveWxdata();
                    this.isUser = true;
                    this.getWxLogin(this.isUser)
                }
                this.isShowTel = false;
                
            },
            getUserInfo(){
                console.log(1)
                let _this = this;
                _this.userinfo = [];
                _this.phone = [];
                uni.getUserInfo({
                    provider: 'weixin',
                    success: function(infoRes) {
                        console.log('信息',infoRes)
                        let {avatarUrl,city,country,gender,language,nickName,province} = infoRes.userInfo;
                        _this.userinfo.push({
                            avatarUrl: avatarUrl,
                            city: city,
                            country: country,
                            gender: gender,
                            language: language,
                            nickName: nickName,
                            province: province
                        })
                        console.log(_this.userinfo)
                        uni.getSetting({
                            success(res) {
                                //授权后直接获取用户手机
                                if(res.authSetting['scope.userInfo']){
                                    _this.isShowTel = true;
                                }else{
                                    //console.log('没有授权')
                                }
                            }
                        })
                    },
                    fail(res) {
                        //console.log(res)
                        uni.showToast({
                            title: '授权失败',
                            icon: 'none',
                            duration: 1500
                        })
                    }
                });
            },
            //获取openid 和 session_key
            //appid  secret  微信后台获取  授权类型,此处只需填写 authorization_code
            getdata(code){
                let url = 'https://api.weixin.qq.com/sns/jscode2session?appid='+'appid'+'&secret='+'secret'+'&js_code='+code+'&grant_type=authorization_code'; 
                uni.request({
                    method: 'get',
                    url: url,
                    data:'',
                    header: {
                        "Content-Type": "application/x-www-form-urlencoded"
                    },
                    success:(res) => {
                        //console.log(res)
                        this.openid = res.data.openid;
                        this.session_key = res.data.session_key;
                    },
                    fail:(err) => {
                        //也可以写code判断
                        console.log(err);
                    },
                    complete:() => {
                        
                    }
                })
            },
            //获取登录code
            getLoginCode(){
                let _self = this;
                uni.login({
                    provider: 'weixin',
                    success: function(loginRes) {
                        console.log('code',loginRes);
                        _self.getdata(loginRes.code)
                    },
                })
            },
            login(type){
                uni.navigateTo({
                    url: './login'
                })
            }
        }
    }
</script>

<style scoped>
.btns{
    display: flex;
    height: 100%;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.btns view,.btns .wx{
    width: 630upx;
    margin:114upx 60upx 0;
    border-radius: 44upx;
    background:#5178C8;
    text-align: center;
    line-height: 80upx;
    color: #fff;
    font-size: 30upx;
}
.btns button.wx{
    font-size: 34upx;
    line-height: 100upx;
}
.btns view.tels{
    background: transparent;
    border: 2upx solid #999;
}
.tel_cont{width: 100%;}
.tel_cont .mask{width: 100%;height: 100%;position: fixed;left: 0;right: 0;top: 0;background: rgba(0,0,0,.5)}
.tel{height: 400upx;background:#fff;position: fixed;bottom: 0;left: 0;right: 0;border-radius: 10upx;padding: 30upx 30upx ;}
.tel_btns .sure{background: #3BA0FF;margin-left: 30upx;}
.wxbtn::after{border: 0;}
.tel_btns .cancel{color: #303030;background: #DDDEE0;}
.tel_btns .wxbtn{padding: 0 70upx;}
.tel_btns{margin-top: 120upx;justify-content: center;}
.wxbtn{background: none;color: #fff;font-size: 26upx;font-weight: bold;margin: 0;padding-left: 10upx;}
</style>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容