轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 终极进阶 查看主题

微信小程之登录(附登录demo)

发布者: dennyluo | 发布时间: 2017-2-21 11:15| 查看数: 6028| 评论数: 1|帖子模式

为了让大家方便的查看微信登录问题,我特别设置了一个分类,微信登录相关,方便大家能够集中解决问题;
本文作者:会飞的鱼lala,来自授权地址:

前言
微信小程序发布出来,很快就在互联网引发了一场风波。很多人都跃跃欲试,可是就登录这一块,搞了好久都搞不住。所以我来总结一下。可能以后会有变更,但至少目前是这个样子

原理
用户进入小程序后,肯定有一部分要与后端交互的。然后我们在这个交互的地方启动验证。
比方说进入首页,首页可能会显示list吧,list你肯定要请求接口吧,接口你肯定要带上用户的唯一标识3rd_session吧。然后就在这儿把关,验证3rd是否合法。
当然你也可以每次请求都验证,但是我感觉没必要。只要在进入小程序的第一个与后端交互处验证就行


项目架构

 

cfg.js

  1. var host='';
  2. var arr={
  3. //请求接口(获取新的3rd_session和验证3rd_session)
  4. loginURI:host+'/index.php?g=wxapp&m=Base&a=userLogin',
  5. sessionCheckURI:host+'/index.php?g=wxapp&m=memo&a=addMemo'
  6. }
  7. function gets(arg){
  8. return arr[arg];
  9. }
  10. module.exports ={
  11. gets:gets
  12. }

util.js


  1. var cfg_js=require('cfg.js');
  2. //用户登录
  3. function getNewSession(saveSesionOk){
  4. wx.login({
  5. success: function(res) {
  6. wx.request({
  7. url: cfg_js.gets('loginURI'),
  8. data: {code: res.code},
  9. success: function(res){
  10. var new_session=res.data.session;
  11. wx.setStorage({
  12. key:"session",
  13. data:new_session,
  14. success:function(res){
  15. saveSesionOk(res)
  16. }
  17. })
  18. }
  19. })
  20. }
  21. });
  22. }
  23. //set本地存储
  24. function setStrg(key,value,success){
  25. wx.setStorage({
  26. key:key,
  27. data:value,
  28. success: function(res){
  29. success(res)
  30. }
  31. })
  32. }
  33. //get本地存储
  34. function getStrg(key,success,fail){
  35. wx.getStorage({
  36. key: key,
  37. success: function(res){
  38. success(res)
  39. },
  40. fail: function(res) {
  41. fail(res)
  42. }
  43. })
  44. }
  45. //封装post请求
  46. function post(url,data,success){
  47. wx.request({
  48. url: url,
  49. data:data,
  50. method: 'POST',
  51. header: {'content-type': 'application/x-www-form-urlencoded'},
  52. success: function(res) {
  53. success(res)
  54. }
  55. })
  56. }
  57. //封装get请求
  58. function got(url,data,success){
  59. wx.request({
  60. url: url,
  61. data:data,
  62. header: {'content-type': 'application/json'},
  63. success: function(res) {
  64. success(res)
  65. }
  66. })
  67. }
  68. //3rd_session检测
  69. function sessionCheck(session,success){
  70. //0代表不合法,1代表ok
  71. var url= cfg_js.gets('sessionCheckURI')+"&session="+session;
  72. post(url,{},function(res){
  73. success(res)
  74. })
  75. }
  76. //第一次验证。一般情况下,登录只需要在程序开始的第页面验证一次就好
  77. function firstReqest(sessionCheckOk){
  78. // ---------------------------------验证登录开始------------------------------
  79. getStrg("session",function(res){
  80. //获取本地seesin成功
  81. var session=res.data;
  82. sessionCheck(session,function(res){
  83. var status=res.data;
  84. status=1;//假设验证成功(本地的3rd_session和服务器的3rd_session一致)
  85. //与后台匹配失败
  86. if(status==0){
  87. //重新登录
  88. getNewSession(function(res){
  89. getStrg("session",function(res){
  90. //获取本地session成功
  91. var session=res.data;
  92. sessionCheckOk(session)
  93. },null)
  94. })
  95. }else{
  96. sessionCheckOk(session)
  97. }
  98. })
  99. },function(res){
  100. //获取本地seesin失败
  101. getNewSession(function(res){
  102. getStrg("session",function(res){
  103. var session=res.data;
  104. sessionCheckOk(session)
  105. },null)
  106. })
  107. })
  108. // ---------------------------------结束---------------------------
  109. }
  110. module.exports = {
  111. getNewSession: getNewSession,
  112. setStrg:setStrg,
  113. getStrg:getStrg,
  114. post:post,
  115. got:got,
  116. sessionCheck:sessionCheck,
  117. firstReqest:firstReqest
  118. }

index.js


  1. var util_js=require('../../utils/util.js');
  2. Page({
  3. data: {
  4. content:'未登录'
  5. },
  6. //事件处理函数
  7. onLoad: function () {
  8. var that = this
  9. util_js.firstReqest(function(session){
  10. that.setData({content:'登录成功'})
  11. })
  12. }
  13. })

index.wxml


  1. {{content}}

效果预览

 

源码下载

源码文件:dingshao-WechatApp_login-master.zip


最新评论

wcx 发表于 2022-4-26 11:19
ios源代码查看软件

浏览过的版块

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表