【小程序】一文读懂微信小程序登录流程及获取手机号

简介: 【小程序】一文读懂微信小程序登录流程及获取手机号

 image.gif编辑

目录

一、小程序的登录流程

首次登录

再次登录的时候,就要判断存储的session_key是否过期了

二、小程序怎么获取手机号

总结


一、小程序的登录流程

image.gif编辑

首次登录

    1. 调用小程序api接口 wx.login() 获取 临时登录凭证code ,这个code是有过期时间的.
    2. 将这个 code 回传到开发者服务器(就是请求开发者服务器的登录接口,通过凭证进而换取用
    3. 户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等)
    4. 拿到开发者服务器传回来的会话密钥(session_key)之后,前端需要保存起来.
    wx.setStorageSync('sessionKey', 'value')

    image.gif

    再次登录的时候,就要判断存储的session_key是否过期了

       1. 获取缓存中的session_keywx.getStorageSync('sessionKey')

       2. 果缓存中存在session_key,那么调用小程序api接口 wx.checkSession() 来判断登录态是 否过期,回调成功说明当前 session_key 未过期,回调失败说明 session_key 已过期。登录态过 期后前端需要再调用 wx.login()获取新的用户的code,然后再向开发者服务器发起登录请求.

       3. 一般在项目开发,开发者服务器也会对用户的登录态做过期限制,所以这时在判断完微信服务 器中登录态如果没有过期之后还要判断开发者服务器的登录态是否过期。(请求开发者服务器 给定的接口进行请求判断就好)


    二、小程序怎么获取手机号

    1. 准备一个button组件, button 组件 open-type 的值设置为 getPhoneNumber ,当用户点击并

    同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌 code ;

    <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

    image.gif

    Page({ 
        getPhoneNumber (e) { 
                console.log(e.detail.code) 
                } 
        })

    image.gif

    2. 接着把 code 传到开发者后台,并在开发者后台调用微信后台提供的

    phonenumber.getPhoneNumber 接口,消费 code 来换取用户手机号。每个 code 有效期为5

    钟,且只能消费一次。

    getPhoneNumber: function (e) { 
         var that = this;
        console.log(e.detail.errMsg == "getPhoneNumber:ok"); 
        if (e.detail.errMsg == "getPhoneNumber:ok") { 
            wx.request({ 
                url: 'http://localhost/index/users/decodePhone',
                 data: { encryptedData: e.detail.encryptedData,
                 iv: e.detail.iv, 
                 sessionKey: that.data.session_key, 
                  uid: "", },
                 method: "post", 
                 success: function (res) {
                     console.log(res);
                     }
                  }) 
               }
         }

    image.gif

    注: getPhoneNumber 返回的 code wx.login 返回的 code 作用是不一样的,不能混用.

    注:从基础库 2.21.2 开始,对获取手机号的接口进行了安全升级, 需要用户主动触发才能发起获取

    手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。另外,新版本接口

    需要提前调用 wx.login 进行登录.


    总结

    本篇文章给大家分享了微信小程序开发过程中用户登录及获取手机号的方法。

    image.gif编辑


    目录
    相关文章
    |
    3月前
    |
    小程序 前端开发 测试技术
    微信小程序的开发完整流程是什么?
    微信小程序的开发完整流程是什么?
    207 7
    |
    3月前
    |
    存储 JSON 小程序
    微信小程序入门之新建并认识小程序结构
    微信小程序入门之新建并认识小程序结构
    70 1
    |
    2月前
    |
    小程序 前端开发 算法
    |
    3月前
    |
    小程序 JavaScript API
    微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
    这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
    1443 0
    微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
    |
    3月前
    |
    机器学习/深度学习 人工智能 小程序
    【一步步开发AI运动小程序】三、运动识别处理流程
    随着人工智能技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等AI运动APP备受关注。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。文章介绍了视频帧、帧率FPS、抽帧和人体识别等基本概念,并详细说明了处理流程,包括抽帧、人体识别检测、骨骼图绘制和运动分析等步骤。下篇将介绍如何在小程序中实现抽帧。
    |
    3月前
    |
    小程序 算法 前端开发
    微信小程序---授权登录
    微信小程序---授权登录
    115 0
    |
    3月前
    |
    小程序
    微信小程序的注册流程
    微信小程序的注册流程
    130 0
    |
    3月前
    |
    小程序
    如何将CCBUPT全能墙小程序添加到手机桌面
    如何将CCBUPT全能墙小程序添加到手机桌面
    43 0
    |
    5月前
    |
    小程序 前端开发
    微信小程序商城,微信小程序微店 【毕业设计参考项目】
    文章推荐了一个微信小程序商城项目作为毕业设计参考,该项目在Github上获得18.2k星,提供了详细的使用教程和前端页面实现,适合学习微信小程序开发和作为毕业设计项目。
    微信小程序商城,微信小程序微店 【毕业设计参考项目】
    |
    5月前
    |
    小程序 前端开发 持续交付
    小程序全栈开发中的CI/CD流程与自动化部署是一种高效的开发模式。
    本文探讨小程序全栈开发中的CI/CD流程与自动化部署,介绍持续集成与部署的概念,包括自动化构建、测试、代码审查及部署实践。通过提高代码质量、迭代速度及团队协作效率,确保小程序稳定运行与良好用户体验。
    102 2