微信小程序登录
在manifest.json中的源码视图下找到mp-weixin下的appid,填写申请到的开发者id
"mp-weixin" : { "appid" : "xxxxxxxxxxxxxxx", "setting" : { "urlCheck" : false }, "usingComponents" : true },
app.vue
<script> global.isLogin=function(){ try{ var suid=uni.getStorageSync('suid') //随机码 var srand=uni.getStorageSync('srand') }catch(e){ //TODO handle the exception console.log(111) console.log(e) } if(suid==='' || srand===''){ return false }else{ return [suid,srand] } } export default { onLaunch: function() { console.log('App Launch') }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } </script> <style> /*每个页面公共css */ view{ } page{ } </style>
login.vue
<template> <view> <button type="primary" open-type="getUserInfo" @getuserinfo="getUserInfo" withCredentials="true" >微信登录</button> <button type="default" open-type="getPhoneNumber" @bindgetphonenumber="getPhoneNumber" > 手机登录 </button> <!-- #ifdef APP-PLUS --> <!-- #endif --> </view> </template> <script> // withCredentials 是否带上登录信息 // https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code //https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html export default{ onLoad() { uni.setNavigationBarTitle({ title:'login' }) }, methods:{ getPhoneNumber(res){ console.log(res) }, getUserInfo:(res)=>{ console.log(res) //获取一些不加密的基本信息 if(!res.detail.iv){ uni.showToast({ title:'您取消了授权,登录失败', icon:'none' }) return false } uni.login({ provider:'weixin', //微信登录 success(loginRes) { //会返回code session——key //将登录返回的code传入获取openid 和 session_key uni.request({ url:'https://hoa.hcoder.net/xcxencode/?c=sk&appid=wx9358b9a7385d9080&secret=39f6d86896344757dd5afbb4de2b3f05&code='+loginRes.code, success: (res3) => { //openid //session_key //解密 // 获取加密的东西 uni.request({ method:'POST', url:'https://hoa.hcoder.net/xcxencode/', header:{'content-type':'application/x-www-form-urlencoded'}, data:{ appid:'wx9358b9a7385d9080', sessionKey:res3.data.session_key, iv:res.detail.iv, encryptedData:res.detail.encryptedData }, success: (res4) => { console.log(res4) } }) } }) }, fail(r) { console.log(r,222) } }) } } } </script> <style> </style>