微信小程序-微信小程序登录流程(一)

这篇具有很好参考价值的文章主要介绍了微信小程序-微信小程序登录流程(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用

冷启动:

小程序首次打开或销毁后再次被打开,此时小程序需要重新加载启动,即冷启动。会检查小程序是否有最新版本,如果有则将异步下载最新版本,但是仍将运行当前版本等到下一次冷启动时再运行最新版本。

热启动:

如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后 24 小时之内下发新版本信息到用户。用户下次打开时会先更新最新版本再打开

一、微信小程序登录流程

官网文档

小程序登录 | 微信开放文档

微信小程序-微信小程序登录流程(一)

说明

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

2、调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意事项

1、会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥

2、临时登录凭证 code 只能使用一次

(一)wx.login(Object object)

wx.login(Object object) | 微信开放文档

微信小程序通过wx.login()获取微信登录凭证code

code是一个带有时效性的凭证,有效时间是5分钟,它就相当于一个会过期的临时身份证,过期之后需要调用wx.login()重新生成登录凭证。

假如没有这个登录凭证,而是直接通过wx.login()直接拿到微信用户的编号1,再通过wx.request请求接口拉取到微信用户1在我们业务侧的个人信息,那么黑客就可以通过遍历所有的id,把整个业务侧的个人信息全部拉走,甚至相关的其他数据。

wx.login()是限频接口,一天的调用总次数不多于该小程序pv(访问量)的两倍。“限频接口”指的是一个用户在一段时间内不允许频繁调用的 wx 接口,此类接口一般会调用到微信后台系统资源,为了保护系统,同时防止用户资源被滥用,开发者需要对此类接口做适度的频率限制,不能无节制地调用

调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成

参数

Object object

属性 类型 默认值 必填 说明 最低版本
timeout number 超时时间,单位ms 1.9.90
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
code string 用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 code2Session,使用 code 换取 openid、unionid、session_key 等信息

示例代码

wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: 'https://example.com/onLogin',
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

(二) 小程序登录 auth.code2Session

小程序登录 | 微信开放文档

将微信登录凭证code 发送给开发者服务器,也就是我们自己的开发服务器。开发者服务器接收到code 后,将code和 AppID+AppSecret 对接微信接口服务,通过code2Session这个api接口来获取真正需要的微信用户的登录态session_key和 openid 和 unionid

AppID和AppSecret相当于微信小程序的身份证,获取方法:登录微信小程序的管理系统——>开发管理——>开发设置

微信公众平台

微信小程序-微信小程序登录流程(一)

微信小程序-微信小程序登录流程(一)

 access_token

是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
准确来说session_key才是真正的微信登录态信息,但是把 openid 和 unionid加起来一起理解,也可以笼统地理解为这些都是微信的登录态信息。

AppID和AppSecret,在小程序管理平台-设置-开发设置,他们是微信鉴别开发者身份的重要信息。AppID是公开信息,AppSecret是开发者的隐私数据,生成之后需要开发者保存起来,如果发现泄露需要在小程序管理平台重置AppSecret。

openid是微信用户的唯一标识

session_key是微信服务器给开发者服务器颁发的身份凭证,官方说需要定期使

wx.checkSession检测,但是在实际的场景里面其实也可以不用,用和不用主要看业务需求;早起官方是返回 expire_time 过期时间的,但是后面取消了,这里有一个比较新的官方回复:用户越频繁使用小程序,session_key有效期越长,…… | 微信开放社区,有效期是3天,但是这个不一定是固定的,具体看业务需求,总的原则就是维护一个自定义登录态,自定义登录需要和微信登录态关联。
unionid是用户在微信开放平台的唯一标识符,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionId是相同的

接口说明

接口英文名

code2Session

功能描述

登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见小程序登录。

调用方式

HTTPS 调用


GET https://api.weixin.qq.com/sns/jscode2session 

请求参数

属性 类型 必填 说明
appid string 小程序 appId
secret string 小程序 appSecret
js_code string 登录时获取的 code,可通过wx.login获取
grant_type string 授权类型,此处只需填写 authorization_code

返回参数

属性 类型 说明
session_key string 会话密钥
unionid string 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明。
errmsg string 错误信息
openid string 用户唯一标识
errcode int32 错误码

调用示例

示例说明: HTTPS请求

请求数据示例


GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 

返回数据示例

{
"openid":"xxxxxx",
"session_key":"xxxxx",
"unionid":"xxxxx",
"errcode":0,
"errmsg":"xxxxx"
}

错误码

错误码 错误码取值 解决方案
40029 code 无效 js_code无效
45011 api minute-quota reach limit  mustslower  retry next minute API 调用太频繁,请稍候再试
40226 code blocked 高风险等级用户,小程序登录拦截 。风险等级详见用户安全解方案
-1 system error 系统繁忙,此时请开发者稍候再试

(三) 获取接口调用凭据 getAccessToken

接口应在服务器端调用,详细说明参见服务端API。

接口说明

接口英文名

getAccessToken

功能描述

  • 获取小程序全局唯一后台接口调用凭据,token有效期为7200s,开发者需要进行妥善保存。

  • 如使用云开发,可通过云调用免维护 access_token 调用。

  • 如使用云托管,也可以通过微信令牌/开放接口服务免维护 access_token 调用。

调用方式

HTTPS 调用


GET https://api.weixin.qq.com/cgi-bin/token 

请求参数

属性 类型 必填 说明
grant_type string 填写 client_credential
appid string 小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)
secret string 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

返回参数

属性 类型 说明
access_token string 获取到的凭证
expires_in number 凭证有效时间,单位:秒。目前是7200秒之内的值。

其他说明

access_token 的存储与更新

  • access_token 的存储至少要保留 512 个字符空间;
  • access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效;
  • 建议开发者使用中控服务器统一获取和刷新 access_token,其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致 access_token 覆盖而影响业务;
  • access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值,中控服务器需要根据这个有效时间提前去刷新。在刷新过程中,中控服务器可对外继续输出的老 access_token,此时公众平台后台会保证在5分钟内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
  • access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在API调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。

详情可参考微信公众平台文档 《获取access_token》

免维护 access_token 的场景

如果使用了云托管或云开发,可以免维护 access_token,免鉴权直接调用服务端接口。

云托管:

  • 通过微信令牌免维护 access_token 发起服务端调用,在调用微信服务端接口时,将 URL 上的 access_token 参数改成 cloudbase_access_token,值通过微信令牌取得。
  • 调用微信支付也可以免维护鉴权和支付证书信息,避免证书泄漏风险。

云开发:

  • 通过云开发云调用免维护 access_token 调用。
  • 调用微信支付也可以免维护鉴权和支付证书信息,避免证书泄漏风险。

在线调试

开发者可以使用网页调试工具调试该接口

调用示例

示例说明: HTTPS调用示例文章来源地址https://www.toymoban.com/news/detail-501128.html

请求数据示例


GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 

返回数据示例


{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
} 

错误码

错误码 错误码取值 解决方案
-1 system error 系统繁忙,此时请开发者稍候再试
40001 invalid credential  access_token isinvalid or not latest 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口
40013 invalid appid 不合法的 AppID ,请开发者检查 AppID 的正确性,避免异常字符,注意大小写

到了这里,关于微信小程序-微信小程序登录流程(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】授权登录流程解析

      目录 微信授权登录流程 1. 官方图示流程详解 2. 代码登录流程拆解 2.1 前端代码示例讲解 2.2 后端代码示例讲解 2.3 代码登录流程拆解 🌟 3. 表情包存储展示(扩展) 附议  ① 微信服务器验证: 当用户打开小程序时,小程序会向用户展示登录按钮,用户点击登录按钮后,小

    2024年02月08日
    浏览(44)
  • 微信小程序登录流程与实现

    在了解小程序登录之前,请大家先了解小程序的全局实例和全局组件,以方便理解本文的后续内容,已经了解的可以直接开始。 全局实例和全局组件( 👈 点击直达) 微信小程序的登录流程 微信小程序的登录 首先需要写一个微信小程序的登录弹窗,登录弹窗的作用就是发起

    2024年02月16日
    浏览(43)
  • 说说微信小程序的登录流程?

    传统的 web 开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当 token 过期,用户都需要重新登录 而在微信小程序中,可以通过微信官方提供的

    2024年02月20日
    浏览(45)
  • 微信小程序的登录流程——代码详解

    小程序登录流程图(具体详情可看官网链接): https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。 前端开发者需要做的任务是从小程序到开发者服务器

    2024年02月09日
    浏览(45)
  • 微信小程序三种授权登录以及授权登录流程讲解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《 微信小程序开发实战 》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你

    2024年02月08日
    浏览(52)
  • 微信小程序&会议OA-登录获取手机号流程&登录-小程序&导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

    目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小程序 login.js user.j

    2024年02月04日
    浏览(53)
  • 微信小程序登录流程(包含前端、后端代码)

    在微信小程序的开发过程中,如果想要保留 用户 的 数据 (比如: 操作记录 、 购物车信息 等等)就必须要 用户 登陆。为什么呢?比如说,数据库中有一条 数据 你如何知道这条数据属于谁?属于那个用户呢?这就需要用户登录来获取 用户 的 唯一标识 从而确定这条数据是属

    2024年02月03日
    浏览(57)
  • mpVue 微信小程序授权登录流程(即登录鉴权流程)及获取手机号一键登录教程(getPhoneNumber使用)

    微信小程序登录 鉴权流程 如下: 因 wx.getUserProfile 与 wx.getUserInfo 接口被收回了,都不能弹出授权窗口,只能使用头像昵称填写能力去获取微信用户信息。 在鉴权页面如下操作 : 1、在 onShow 中调用微信登录 wx.login 获取到唯一的code(用来获取 openid ); 2、根据 wx.login 获取的c

    2024年02月12日
    浏览(67)
  • 微信小程序第五节——登录那些事儿(超详细的前后端完整流程)

    📌 微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。 📌 微信小程序第二节 —— 自定义组件 📌 微信小程序第三节 —— 页面跳转的那些事儿 📌 微信小程序第四节—— 网络请求那些事儿 😜 作           者 :是江迪呀 ✒️ 本文 : 微

    2024年02月09日
    浏览(42)
  • SpringCloud微服务实战——搭建企业级开发框架:第三方登录-微信小程序授权登录流程设计和实现

      在前面的设计和实现中,我们的微服务开发平台通过JustAuth来实现第三方授权登录,通过集成公共组件,着实减少了很多工作量,大多数的第三方登录直接通过配置就可以实现。而在第三方授权登录中,微信小程序授权登录和APP微信授权登录是两种特殊的第三方授权登录

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包