微信小程序获取token的流程(小程序登录code生成原理)


一、背景
传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录
服务端校验用户信息通过之后,下发一个代表登录态的token给客户端,以便进行后续的交互,每当token过期,用户都需要重新登录
而在
微信
小程序中,可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系,从而实现登陆功能
实现小程序用户体系主要涉及到openid和code的概念:
调用wx.login方法会生成code,将code作为参数传递给微信服务器指定接口,就可以获取用户的openid
对于每个小程序,微信都会将用户的微信ID映射出一个小程序openid,作为这个用户在这个小程序的唯一标识
二、流程
微信小程序登陆具体实现的逻辑如下图所示:
通过wx.login获取到用户的code判断用户是否授权读取用户信息,调用wx.getUserInfo读取用户数据由于小程序后台授权域名无法授权微信的域名,所以需要自身后端调用微信服务器获取用户信息通过wx.request方法请求业务方服务器,后端把appid,appsecret和code一起发送到微信服务器。appid和appsecret都是微信提供的,可以在管理员后台找到微信服务器返回了openid及本次登录的会话密钥session_key后端从数据库中查找openid,如果没有查到记录,说明该用户没有注册,如果有记录,则继续往下走session_key是对用户数据进行加密签名的密钥。为了自身应用安全,session_key不应该在网络上传输然后生成session并返回给小程序小程序把session存到storage里面下次请求时,先从storage里面读取,然后带给服务端服务端对比session对应的记录,然后校验有效期
更加详细的功能图如下所示:
三、扩展
实际业务中,我们还需要登录态是否过期,通常的做法是在登录态中保存有效期数据,该有效期数据应该在服务端校验登录态时和约定的时间做对比
这种方法需要将本地存储的登录态发送到小程序的服务端,服务端判断为无效登录态时再返回需重新执行登录过程的消息给小程
另一种方式可以通过调用wx.checkSession检查微信登陆态是否过期:
如果过期,则发起完整的登录流程
如果不过期,则继续使用本地保存的自定义登录态
这种方式的好处是不需要小程序服务端来参与校验,而是在小程序端调用AP,流程如下所示:


  • 寰俊灏忕▼搴忚幏鍙杢oken鐨勬祦绋(灏忕▼搴忕櫥褰昪ode鐢熸垚鍘熺悊)
    绛旓細涓銆佽儗鏅紶缁熺殑web寮鍙戝疄鐜扮櫥闄嗗姛鑳斤紝涓鑸殑鍋氭硶鏄緭鍏ヨ处鍙峰瘑鐮併佹垨鑰呰緭鍏ユ墜鏈哄彿鍙婄煭淇¢獙璇佺爜杩涜鐧诲綍鏈嶅姟绔牎楠岀敤鎴蜂俊鎭氳繃涔嬪悗锛屼笅鍙戜竴涓唬琛ㄧ櫥褰曟佺殑token缁欏鎴风锛屼互渚胯繘琛屽悗缁殑浜や簰,姣忓綋token杩囨湡锛岀敤鎴烽兘闇瑕侀噸鏂扮櫥褰曡屽湪寰俊灏忕▼搴涓紝鍙互閫氳繃寰俊瀹樻柟鎻愪緵鐨勭櫥褰曡兘鍔涙柟渚垮湴鑾峰彇寰俊鎻愪緵鐨勭敤鎴疯韩浠芥爣璇...
  • 鐢佃剳濡備綍瀵寰俊灏忕▼搴鎶撳寘token
    绛旓細1銆侀鍏堝畨瑁協iddler锛屾墦寮fiddlertools銆乷ptions銆乬enneral锛屽叏閫夈2銆佸叾娆℃墦寮鐢佃剳绔灏忕▼搴閫鍑寰俊锛岀櫥褰曞井淇℃椂璁剧疆浠g悊銆3銆佺劧鍚庢墦寮灏忕▼搴忋佹墦寮浠诲姟绠$悊鍣紝鎵惧埌灏忕▼搴忚繘绋嬶紝鎵撳紑鏂囦欢鎵鍦ㄤ綅缃4銆佹渶鍚庨鍑哄井淇★紝鍒犻櫎\WMPFRuntime涓嬬殑鎵鏈夋枃浠讹紝鍐嶆鐧诲綍鎵撳紑灏忕▼搴忓嵆鍙
  • 灏忕▼搴涓熀浜token鐨鐧诲綍娴佺▼
    绛旓細1.棣栨鐧诲綍灏忕▼搴忥紝鏈湴瀛樺偍涓繕涓嶅瓨鍦╰oken锛屽嵆闇瑕佸彂璧风櫥褰曡姹傚緱鍒皌oken锛屽苟瀛樺埌鏈湴瀛樺偍 2.灏忕▼搴忔湰鍦板瓨鍌ㄤ腑宸插瓨鍦╰oken锛屼絾鏄凡杩囨湡锛屽嵆闇瑕佸啀娆″彂璧风櫥褰曡姹備互鑾峰緱token锛屽苟瑕嗙洊鎺夋湰鍦板瓨鍌ㄤ腑鍘熷厛鐨則oken 3.灏忕▼搴忔湰鍦板瓨鍌ㄤ腑瀛樺湪token涓旀湁鏁堬紝鍗充繚鎸佺櫥褰曠姸鎬 ...
  • 寰俊鍏紬骞冲彴token鎬庝箞鑾峰彇
    绛旓細1銆佺櫥褰寰俊鍏紬骞冲彴锛岀偣鍑诲乏渚у紑鍙戣呬腑蹇冿紝璁颁笅AppId鍜孉ppSecret銆/iknow-pic.cdn.bcebos.com/72f082025aafa40f0a34594da564034f79f019ab"target="_blank"title="鐐瑰嚮鏌ョ湅澶у浘"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/72f082025aafa40f0a34594da564034f79f019ab?x-bce-process=image...
  • 寰俊鎵爜鑷姩鑾峰彇鍙风爜鐨勮蒋浠舵槸鍝釜
    绛旓細寰俊鎵爜鑷姩鑾峰彇鍙风爜鐨勮蒋浠舵槸灏忕▼搴弔oken銆1銆佺偣鍑婚〉闈㈣幏鍙栨巿鏉僣ode銆2銆佽幏鍙栧皬绋嬪簭token銆3銆佹牴鎹畉oken涓巆ode鑾峰彇鎵嬫満鍙风爜銆4銆佹墽琛岀櫥褰曡璇侀昏緫銆
  • 寰俊灏忕▼搴wx.login()鐧婚檰娴佺▼
    绛旓細寰俊灏忕▼搴忕殑鐧婚檰涓鑸兘鏄啓鍦╝pp.js褰撲腑锛屽叿浣娴佺▼濡備笅 1銆佺敤鎴烽氳繃login锛堬級鏂规硶鑾峰彇code锛岀劧鍚庢妸code浼犵粰寮鍙戝悗鍙帮紝鍚庡彴閫氳繃code 浠ュ強appid浠ュ強瀵嗛挜鑾峰彇openid鍜宻essionkey 杩涜鐧婚檰锛岀劧鍚庤繑鍥炰竴涓token缁欏墠绔 2銆佸墠绔嬁鍒皌oken涔嬪悗瀛樺偍鍒癵lobalData閲岀殑鍙橀噺褰撲腑锛岃繖鏍峰叾浠栭〉闈㈠氨鏄彲浠ュ悓杩噕ar app=getapp锛...
  • 缇婁簡涓緤鏂囦欢淇敼鏁欑▼(鏃犻檺閬撳叿)
    绛旓細1銆1棣栧厛澶у闇瑕佸湪鐢佃剳涓婄櫥褰曞井淇★紝涔嬪悗鎵撳紑缇婁簡涓緤灏忕▼搴忓井淇pc鐗堜笅杞2鐒跺悗渚濇鐐瑰嚮寰俊鐨璁剧疆锛屽啀鍘婚夋嫨鈥滄枃浠剁鐞嗏3涔嬪悗鍘绘墦寮鈥渨echat files鈥濇枃浠跺す4鎵撳紑閲岄潰鐨勨渁pplet鈥5鎵撳紑鍚庣紑涓衡渪xxxxxx0銆2銆1棣栧厛鐧诲綍鐢佃剳寰俊锛岄渶瑕佽繘鍏ヤ竴娆℃父鎴2鍏舵鎺ョ潃鐐瑰嚮寰俊鈥滆缃濓紝鍦ㄩ噷闈㈤夋嫨鈥滄枃浠剁鐞嗏濓紝鐐瑰嚮...
  • 缇婁簡涓緤閫氳繃绗簩鍏鎬庝箞娌℃湁鎴戠殑澶村儚
    绛旓細1.鍏堝幓缇婁簡涓緤寰俊灏忕▼搴,娓告垙涓荤晫闈㈠乏涓婅鈥滀亢鐨勫悕鐗団;2銆佺劧鍚庢妸澶村儚涓嬮潰鐨処D杈撹繘鏉鑾峰彇TOKEN;3銆佺劧鍚庤緭鍏ユ暟閲;4銆佺劧鍚庨夋嫨鍔犲叆缇婄兢鎴栦竴閿氬叧鍗冲彲!2.銆佸厛鍘荤緤浜嗕釜缇婂井淇″皬绋嬪簭,娓告垙涓荤晫闈㈠乏涓婅鈥滀亢鐨勫悕鐗団;2銆佺劧鍚庢妸澶村儚涓嬮潰鐨処D杈撹繘鏉ヨ幏鍙朤OKEN;3銆佺劧鍚庤緭鍏ユ暟閲;4銆佺劧鍚庨夋嫨鍔犲叆缇婄兢鎴栦竴閿...
  • 濡備綍浣跨敤 springboot 杩涜寰俊灏忕▼搴缃戦〉鎺堟潈?
    绛旓細鍏抽敭1: 绮惧噯鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅锛屾彁鍗囩敤鎴蜂綋楠岄噸鐐2: 鐔熸倝寰俊瀹樻柟鎺ュ彛鏂囨。锛屾帉鎻″鎺娴佺▼蹇呬慨3: 涓寰俊灏忕▼搴寮鍙戣呯殑鍏ラ棬璇剧▼锛屽珐鍥烘巿鏉冩祦绋嬫楠よ瑙 鏈嶅姟鍙疯璇: 鑾峰緱缃戦〉鎺堟潈鎺ュ彛鏉冮檺锛岃璇佽闃呭彿闇鏀粯300鍏/骞村紑鍙戝伐鍏烽厤缃: 鍚庣浣跨敤SpringBoot鐨処DEA锛屽墠绔熷姪uniapp鍜屽井淇″紑鍙戣呭伐鍏锋枃妗e鍚: 绱ф墸寰俊...
  • 缃戜笂寮搴鑾峰彇token澶辫触
    绛旓細1銆佹墦寮寰俊锛屼笅鎷灏忕▼搴鍧炪2銆佹壘鍒扮綉涓婂涵瀹″皬绋嬪簭锛岄暱鎸夋嫋鑷虫渶涓嬫柟鍒犻櫎浣嶇疆锛屼粠灏忕▼搴忓潪涓垹闄よ灏忕▼搴忥紝閲嶆柊鎼滅储缃戜笂搴灏忕▼搴忥紝杩涘叆鍗冲彲銆
  • 扩展阅读:苹果手机token获取失败 ... 获取token软件 ... token下载 ... 小程序token怎么提取 ... 手机获取阿里云盘token ... 手抓抓包token怎么获取 ... 手机获取token教程 ... oppo如何获取token串 ... 阿里云token一键获取网址 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网