菜鸡源码,专注精品下载!
当前位置:首页 > 建站教程 > 建站知识

详解微信小程序授权登录功能及示例代码

发布时间:2024-01-05  栏目:建站知识   浏览:   分类:微信小程序教程 微信小程序api

微信小程序授权登录功能主要包括以下几个步骤: 1. 在小程序的app.json文件中配置"permission": { "scope.userLocation": { "desc": "你的位置信息将用于提供个性化服务" } },以获取用户位置信息。 2. 在需要使用授权登录功能的页面的js文件中,调用wx.login()方法进行登录。该方法会返回一个临时登录凭证code,通过这个code可以换取用户的openid和session_key。 3. 调用wx.getUserInfo()方法,传入上一步获取到的code,以获取用户的详细信息。 4. 最后,可以将获取到的用户信息存储在本地,以便后续使用。 示例代码如下: ```javascript // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId if (res.

授权登录开发思路

1、调用wx.login() 微信api获取临时登录凭证code,并回传到开发者服务器

2、调用auth.code2Session 微信API接口,获取用户唯一标识OpenID、 用户在微信开放平台帐号下的唯一标识UnionID和会话密钥session_key

3、通过步骤2获取的参数进行解密操作,获取用户手机号,头像等特性,并把需要的数据保存到缓存中

示例代码

一、获取临时登录凭证code

由于微信官方修改了getUserInfo接口,现在无法实现一进入微信小程序就会自动弹出授权窗口,所以我们只能通过button按钮让用户手动触发

我们先写一个简单的弹框,用isShow变量控制,isShow取决于步骤3中的缓存信息,当所有步骤都走通,会正确缓存用户信息,此时弹框隐藏,否则弹框都为显示状态

<viewclass='wx_dialog'wx:if="{{isShow}}"><viewclass='wx_content'><text>需要先授权获取个人信息</text><buttonclass="btn"open-type="getPhoneNumber"type="primary"bindgetphonenumber="getUserInfo">微信账号快速授权</button></view></view>

点击按钮时,调用getUserInfo方法,isShow设置为false,同时使用wx.login获取到登录凭证code

getUserInfo:e=>{this.setData({isShow:false})wx.login({success:function(res){letcode=res.code//登录凭证code}})}

二、根据登录凭证code,获取用户登录信息

拿到登录凭证code后,调用auth.code2Session 微信api接口(此处为服务端操作,后端大佬搞定,我们直接调用他给的接口就好)

wx.request({url:获取用户信息的auth.code2Session微信api接口,method:'POST',data:{code:code//登录凭证code},header:{'content-type':'application/json;charset=UTF-8'},success:function(res){varuserphone=res.data.data//解密手机号varmsg=e.detail.errMsg;varsessionKey=userphone.session_key;//会话密钥varencryptedData=e.detail.encryptedData;//签名varunionid=userphone.unionid//唯一标识variv=e.detail.iv;//授权成功if(msg=='getPhoneNumber:ok'){wx.checkSession({success:function(){//进行请求服务端解密手机号this.deciyption(sessionKey,encryptedData,iv,unionid);}})}}})}})

此时大多数用户信息我们已经获取了,但用户手机号,用户头像等信息还处于加密状态,我们需要去解密获取这些参数

三、根据用户信息,解密获取用户手机号

deciyption(sessionKey,encryptedData,iv,unionid){varthat=this;wx.request({url:解密接口,method:'POST',data:{sessionKey:sessionKey,encryptedData:encryptedData,iv:iv},header:{'content-type':'application/json;charset=UTF-8'},success:function(res){letdata=res.dataif(data.resultCode=='success'){wx.setStorageSync('userTel',data.data.phoneNumber);//存储解密后的用户手机号}else{wx.showToast({title:'获取信息失败请重新授权',icon:'none'})that.setData({isShow:true})}},fail:function(res){wx.showToast({title:'获取失败请重新授权',icon:'none'})that.setData({isShow:true})}})},

此时授权登录功能已完成

评论
建站知识
建站知识
使用技巧
调试安装
运营推广