微信小程序> 微信网页授权,微信小程序开发用户授权登陆

微信网页授权,微信小程序开发用户授权登陆

浏览量:1620 时间: 来源:Loriol
本篇将帮助读者实现基于微信开发者工具&C#环境下的用户在小程序上的授权登陆。
准备:
微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
微信小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/index.html
开发:
在开发之初,我们需要先明确微信方已经制定好的授权登陆流程,参看。
你会看到微信方为开发者制定好的登陆授权流程:

如图,即为一个顺向的用户登陆授权的流程。
为什么说它是一个顺向的流程呢?因为在真正的小程序开发中,我们并不确定用户何时需要起调如上的登陆流程(如:用户在某些特定场景下的凭证丢失,但Ta并没有退出小程序而是在小程序内部做跳转等相关操作,即有可能导致一些预期之外的异常),所以,我们需要在这个顺向的流程之外,加一层检测机制,来解决这些异常场景,而官方API中,wx.checkSession刚好可以一定程度上解决这个问题。
那么,我们的认证流程其实应该是:
-小程序wx.checkSession校验登陆态为失效
-success:接口调用成功的回调函数,session_key未过期,流程结束;
-fail:接口调用失败的回调函数,session_key已过期
-》小程序端wx.login获取code并wx.request提交code给己方服务器
-》己方服务器提交Appid+appSecret+code到微信方服务器获取session_key&openid
-》己方服务器根据session_key&openid生成3rd_session(微信方提出的基于安全性的考虑,建议开发者不要将openid等关键性信息进行数据传输)并返回3rd_session到小程序端
-》小程序端wx.setStorage存储3rd_session(在后续用户操作需要凭证时附带该参数)
-》小程序端wx.getUserInfo获取用户信息+wx.getStorage获取3rd_session数据后,一并wx.request提交给己方服务器
-》己方服务器SQL用户数据信息更新,流程结束;
思路整理完毕,接下来实现流程
小程序端:
在小程序中,新建一个通用的JS做基础支持

并在一些需要引用的页面进行引用
varcommon=require("../Common/Common.js")接着,在Common.js中实现逻辑
//用户登陆functionuserLogin(){wx.checkSession({success:function(){//存在登陆态},fail:function(){//不存在登陆态onLogin()}})}functiononLogin(){wx.login({success:function(res){if(res.code){//发起网络请求wx.request({url:'OurServerApiUrl',data:{code:res.code},success:function(res){constself=thisif(逻辑成功){//获取到用户凭证存儲3rd_sessionvarjson=JSON.parse(res.data.Data)wx.setStorage({key:"third_Session",data:json.third_Session})getUserInfo()}else{}},fail:function(res){}})}},fail:function(res){}})}functiongetUserInfo(){wx.getUserInfo({success:function(res){varuserInfo=res.userInfouserInfoSetInSQL(userInfo)},fail:function(){userAccess()}})}functionuserInfoSetInSQL(userInfo){wx.getStorage({key:'third_Session',success:function(res){wx.request({url:'OurServerApiUrl',data:{third_Session:res.data,nickName:userInfo.nickName,avatarUrl:userInfo.avatarUrl,gender:userInfo.gender,province:userInfo.province,city:userInfo.city,country:userInfo.country},success:function(res){if(逻辑成功){//SQL更新用户数据成功}else{//SQL更新用户数据失败}}})}})}至此,小程序端的流程基本实现完毕,接着实现己方服务API
Login接口逻辑范例
if(dicRequestData.ContainsKey("CODE")){stringapiUrl=string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code",ProUtil.SmartAppID,ProUtil.SmartSecret,dicRequestData["CODE"]);HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create(apiUrl);myRequest.Method="GET";HttpWebResponsemyResponse=(HttpWebResponse)myRequest.GetResponse();StreamReaderreader=newStreamReader(myResponse.GetResponseStream(),Encoding.UTF8);stringcontent=reader.ReadToEnd();myResponse.Close();reader.Close();reader.Dispose();//解析userModelReMsg=JSONUtil.JsonDeserializeuserModel(content);//解析if((!string.IsNullOrWhiteSpace(ReMsg.openid))&&(!string.IsNullOrWhiteSpace(ReMsg.session_key))){//成功自定义生成3rd_session与openid&session_key绑定并返回3rd_session}else{//错误未获取到用户openid或session}}else{//错误未获取到用户凭证code}UserInfoUpdate接口在此不加赘述,用户根据自身情况对数据进行操作即可,微信方调用成功时返回的相关参数信息如下

至此,完成了小程序基本的授权登陆及用户信息的获取。
最后的最后,是从别人那里学来的赚零钱小套路~赏点小钱鼓励一下我吧!!!(๑•̀ㅂ•́)و✧

认真看完以上所有后
有啥不懂的欢迎留言提问~
注:以上内容有所删减,仅保留通用内容。在具体项目中必定存在部分逻辑需要调整,引鉴的同学请注意

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎