微信小程序授权登录全过程解析(附代码)
- 服务器端接收到请求后,会去调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。
- 至此,登录流程才真正的结束了。
这是还没有登陆的界面 index.wxml
<view> <!-- 页面头部--> <view class="userinfo"> <button wx:if="{ {!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 点击登录 </button> <block wx:else> <view class="userinfo-nickname"> <view class="TopTitle">{ { userInfo.nickName}}</view> <view style="color:{ {color}}" class="TopSubtitle">{ { TopText}}</view> </view> <image bindtap="bindViewTap" class="userinfo-avatar" src="{ {userInfo.avatarUrl}}" mode="cover"></image> <image class="TopArrow" src="{ {/pages/image/right.png}}" mode="heightFix"></image> </view>
index.js
getUserInfo: function(e) { let biaozhi=this wx.login({ success (res) { //res.code可以理解为是一个字符串 console.log(res.code) wx.setStorage({ key:"code", data:res.code }) wx.getUserInfo({ success:function(e){ console.log(e.userInfo) app.globalData.userInfo=e.userInfo biaozhi.setData({ userInfo:e.userInfo, hasUserInfo:true }) //console.log(biaozhi.userInfo) if (res.code) { //发起网络请求 wx.request({ url: 自己写的api, data: { code: res.code }, header:{ content-type:application/json//默认值 }, method:GET, success(ress) { console.log(ress); wx.setStorage({ key:"session_id", data:ress.data.session_key }) wx.setStorage({ key:"openid", data:ress.data.openid }) } }) } else { console.log(登录失败! + res.errMsg) } }, fail:function(e){ console.log("有大问题") } }) } }) },
登陆后效果:
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序 - 云开发