zhaojs
2023-06-25 4ac3c2382e0733685f7612f8e9ca4e85d15c1411
uniapp/pages/login/wxlogin.vue
@@ -4,13 +4,20 @@
      <view class="pageContent borderBox colCen">
         <image class="applogo" :src="appInfo.logo" mode="aspectFill"></image>
         <view class="wxlogoBtn rowCenCen" @tap="wxlogin()" v-if="haswxlogin">
         <view class="wxlogoBtn rowCenCen" @tap="wxlogin()" v-if="supportWx">
            <image class="logoIcon" src="../../static/images/mine/wxwhite.png" mode=""></image>
            <view>微信一键登录</view>
         </view>
         <view class="goaccount rowCenCen" @tap="goaccount()">
         <view v-if="isSupportMob" class="goaccount rowCenCen" @tap="mobileLogin()">
            <view>本机手机号一键登录/注册</view>
         </view>
         <view v-else class="goaccount rowCenCen" @tap="goaccount()">
            <view>手机号登录/注册</view>
         </view>
         <view style="margin-top: 20px;" v-if="isother"  @tap="goaccount()">
            手机号登录/注册
         </view>
      </view>
      <view class="bottom-fixed colCen">
@@ -28,6 +35,7 @@
      mapMutations
   } from 'vuex';
   import titleBar from '../../components/backTitlebar.vue'
   const univerifyManager = uni.getUniverifyManager();
   export default {
      components: {
         titleBar
@@ -37,18 +45,43 @@
            appInfo: '',
            ifPasslogin: false,
            isread: false,
            haswxlogin: false
            haswxlogin: false,
            isSupportMob:false,
            isother:false,
            supportWx:true
         }
      },
      onLoad() {
         this.appInfo = uni.getStorageSync('appInfo')
         console.log(this.appInfo.iosExamine)
         console.log(getApp().globalData.ifwt)
         //this.haswxlogin = this.appInfo.iosExamine ? false : (getApp().globalData.ifwt == 1 ? true : false)
         this.haswxlogin = getApp().globalData.ifwt == 1 ? true :false;
         this.checkSupportWx();
         this.isSupportMoblie();
      },
      methods: {
         ...mapMutations(['login']),
         checkSupportWx()
         {
            // #ifdef APP-PLUS
             if (plus.os.name == 'iOS') {
               if (plus.runtime.isApplicationExist({
                     action: 'weixin://'
                  }) && plus.runtime.isApplicationExist({
                     action: 'taobao://'
                  })) {
                  this.supportWx = true //是否安装微信和淘宝 1代表安装
               } else {
                  this.supportWx = false
               }
            } else {
               if (plus.runtime.isApplicationExist({pname:'com.tencent.mm',
                     action: 'weixin://'
                  })) {
                  this.supportWx = true //是否安装微信 1代表安装
               } else {
                  this.supportWx = false
               }
            }
            // #endif
         },
         backHome() {
            var pages = getCurrentPages();
            console.log(pages.length);
@@ -62,6 +95,98 @@
               })
            }
         },
         isSupportMoblie()
         {
            var that=this;
            uni.preLogin({
               provider: 'univerify',
               success(){  //预登录成功
                  // 显示一键登录选项
                  that.isSupportMob=true;
               },
               fail(res){  // 预登录失败
                  // 不显示一键登录选项(或置灰)
                // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
                  console.log(res)
               }
            })
         },
         doMobileLogin(mobRes)
         {
            var that=this;
            uniCloud.callFunction({
              name: 'getPhoneNumber', // 你的云函数名称
              data: {
                'access_token': mobRes.access_token, // 客户端一键登录接口返回的access_token
                'openid': mobRes.openid // 客户端一键登录接口返回的openid
              }
            }).then(res => {
               console.log(res)
               that.targetToIndex(res.result.data);
              // 登录成功,可以关闭一键登录授权界面了
              univerifyManager.close();
            }).catch(err=>{
               // 处理错误
               console.log(err)
               that.isother=true;
               that.$alert('获取手机号码失败,请使用其他方式登录')
               setTimeout(function(){
                  univerifyManager.close();
               },2000);
            })
         },
         mobileLogin()
         {
            var that=this;
            if (this.isread) {
               univerifyManager.login({
                  provider: 'univerify',
                  univerifyStyle: { // 自定义登录框样式
                   "fullScreen":false,
                  "authButton":
                  {
                     "normalColor":"#F73314",
                     "highlightColor":"#F73314"
                  },
                  "privacyTerms":{
                     "defaultCheckBoxState":false
                  }
                 },
               success(res){ // 登录成功
                  console.log(res.authResult);
                  that.doMobileLogin(res.authResult);
                  },
                  fail(res){  // 登录失败
                  console.log(res)
                     if(res.errCode==30002)
                     {//切换登录方式
                        that.isother=true;
                        univerifyManager.close();
                     }
                     else
                     {
                        that.$alert('获取手机号码失败,请使用其他方式登录')
                        setTimeout(function(){
                           univerifyManager.close();
                        },2000);
                     }
                     that.isother=true;
                  }
               })
               }
               else
               {
                  uni.showToast({
                     title: '请先阅读并同意《用户协议》和《隐私协议》',
                     icon: "none",
                  })
               }
         },
         targetToIndex(e)
         {
            var that = this;