微信小程序登录功能实现(最新)

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

众所周知小程序登录自2022年2月21日24时起回收通过<open-data>展示个人信息的能力,啥意思呢,就是头像展示成灰色,昵称展示成微信用户,例如:微信小程序登录功能实现(最新)

话不多说直接正题。

        首先介绍第一种,费力的方式:依然还是用 open-type 的值设置为 chooseAvatar,当用户选择需要使用的头像之后,可以通过 bindchooseavatar 事件回调获取到获取到头像信息的临时路径。(附官方介绍:头像昵称填写 | 微信开放文档)

说白了就是让用户手动填写信息,说实话,强烈不推荐该做法。有兴趣的看下官方的示例代码,这这里我就不做过多的讲解了。

        其次就是使用wx.getUserProfile,看了众多产品登录源码,都在使用这个,接下来我就简单介绍一下小程序整体登录流程以及该方法的使用。

        1.wx.getUserProfile(Object,object),该方法有个必传字段desc(声明获取用户个人信息后的用途,不超过30个字符),随便写点就行,例如完善会员资料、**信息关联。随便怎么写都行,开心就好。该方法有三个回调,success、fail、complete(用这个就行,一顶二,成功失败都会执行)。

wx.getUserProfile({
      desc: '编辑会员资料',
      complete: (res) => {
        if(res.errMsg == "getUserProfile:ok"){
            //成功的操作
        }else{
            //失败的操作
        }
      }
    })

 附(成功信息打印结果):

cloudID: "***************"
encryptedData: "*************"
errMsg: "getUserProfile:ok"
iv: "*******"
rawData: "{"nickName":"山西懿颖科技有限公司","gender":0,"language":"zh_CN","city":"","province":"","country":"","avatarUrl":"https://thirdwx.qlogo.cn/mmopen/vi_32/PiajxSqBRaEKAYRMLQErdU66S4lfdddAEqicmuJpYiale1DKib4KQXoqibcD78jcy9JJ3icvSNUP3VHITRFuqpMg/132"}"
signature: "*********"
userInfo: {nickName: "山西懿颖科技有限公司", gender: 0, language: "zh_CN", city: "", province: ""

 附(失败信息打印结果):

{errMsg: "getUserProfile:fail getUserProfile:fail auth deny"}

至此:nickName(微信用户名),avatarUrl(头像路径)都拿到了。 

其实以上内容就已经够用了,接下来我会带领各位同学把微信整套登录流程走一遍。

=================《微信登录整体流程》===============

微信登录整体流程:

涉及到的方法:wx.getSetting(),wx.getUserProfile(),wx.authorize(),wx.login()。

何时需要登录?并不是所有的程序都是一进系统就要登录的,例如电商产品,查看订单,查看物流。浏览商品并不需要,所以找准定位。

        一、wx.getSetting()

        该方法主要用户获取用户当前设置,返回值中会出现用户以请求过的权限,例如登录。首先通过该方法查询用户是否已经登录。

        

wx.getSetting({
   success(res){
       //返回值
       //authSetting:
       //scope.address: true
       //scope.invoice: true
       //scope.invoiceTitle: true
       //scope.userInfo: true//这里主要用这个
       //scope.userLocation: true
       //__proto__: Object
       //errMsg: "getSetting:ok"
    if(res.authSetting && !res.authSetting['scope.userInfo']){
        //执行未登录操作
    }
  }
})

        二、wx.login()

        该方法主要用于获取code,把获取到的code传到服务端,服务端(调用auth.code2Session方法换取OpenId、UnionID、session_key)返回Token,你用到的只有Token,括号里的内容作为扩展可以不予理会。拿到Token做本地存储,store、Storage都可以存,超哥一般往Storage里存(存储方法见2.1,往下看),建议Token做加密处理。

    wx.getSetting({
      success(res){
        if(res.authSetting && !res.authSetting['scope.userInfo']){
          //获取code方法
          wx.login({
            success: res => {
              // 发送 res.code 到后台换取 openId, sessionKey, unionId
              token({code:res.code}).then( res => {//这步是token接口的请求
                // 获取本地缓存中的TOKEN
                const TOKEN = wx.setStorageSync('TOKEN',res.token);
              })
            }
          })
        }
      }
    })

           至此token就成功拿到了。

                2.1、wx.setStorageSync以及wx.setStorage区别以及用法

                        区别:显而易见wx.setStorageSync就是同步执行,wx.setStorage异步执行。

                        用法:

                                   存:wx.setStorageSync('key',value);

                                   取:wx.getStorageSync('key');

        三、wx.getUserProfile()

        wx.getUserProfile每次调用都会弹框询问用户,看下图;

        微信小程序登录功能实现(最新)

       前文已经说过了2022年2月21日24时起回收通过<open-data>展示个人信息的能力,所以现在以wx.getUserProfile替换当初的getUserInfo。

        wx.getUserProfile()用法已经说明,详情见上文,这里就不做重复讲解了,直接上代码;

    wx.getSetting({
      success(res){
        if(res.authSetting && !res.authSetting['scope.userInfo']){
          wx.login({
            success: res => {
              // 发送 res.code 到后台换取 openId, sessionKey, unionId
              token({code:res.code}).then( res => {//这步是token接口的请求
                // 获取本地缓存中的TOKEN
                const TOKEN = wx.getStorageSync('TOKEN',res.token);
                wx.getUserProfile({
                  desc: '编辑会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
                  complete: (res) => {
                    if(res.errMsg == "getUserProfile:ok"){
                      console.log('成功了')
                      //存储用户昵称和头像
                        wx.setStorageSync('userInfo', {
                          name:res.userInfo.nickName,
                          img:res.userInfo.avatarUrl,
                        });
                    }else{
                      console.log(res)
                    }
                    
                  }
                })
              })
            }
          })
        }
      }
    })

        至此,登录这套流程就已经完事了,本文通俗易懂,简单粗暴的同学直接复制以上代码,把TOKEN接口请求你换成自己的就OK了。

        ----------以下方法作为拓展延伸--------

        4、wx.authorize()   

        该方法主要用户向用户提前发起授权请求,调用后会立即弹框询问用户是否同意授权某项功能,例如(地理位置、麦克风、摄像头....),旧版的登录用wx.authorize()方法登录的也很多,只不过新版限制了getUserInfo弹出框的功能,其实还是本文一开始说的那套。

        其实除登录外,例如获取授权定位。首先还是通过wx.getSetting()方法查询是否已经授权过定位,如果没有,执行wx.authorize(),提前向用户发起定位授权请求。

wx.getSetting({
  success(res) {
    if (res.authSetting['scope.record'] && !res.authSetting['scope.userLocation']) {
      wx.authorize({
        scope: 'scope.userLocation',
        success () {
          // 用户已经同意小程序使用定位功能,当再次调用wx.getLocation()方法时,不会再次询问。
          wx.getLocation()
        }
      })
    }
  }
})

好了,终于完事了,老样子,不要喷,喜欢的点赞带走,不喜欢的请自觉绕道,写个需要的人,喷子勿扰!!!

如有纠正或不明白的地方,欢迎大家留言探讨。

插播一条广告:

       本公司自营项目:

                  微信电商小程序(拼团、砍价、会员、积分、限时秒杀、分销、直播等诸多功能);

                  刷脸支付(招商加盟,代理加盟,一站式源码部署);

                  另:接各种开发项目,PC、移动、webApp、小程序、App、M站等;

                 如果有需要请打开http://yykj.huijik.com进行留言,(进入页面下拉到最底端即可留言)

        文章来源地址https://www.toymoban.com/news/detail-483117.html

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

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

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

相关文章

  • 【h5+微信小程序】vue2实现h5扫码登录功能

    需要实现在同域名的h5页面上增加一个微信扫码登录的功能,如果用户已经有小程序的账号,可以直接登录。 使用 :vue2+微信小程序原生开发 可以实现上述功能的 前提 是:同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。域名已经配置。 可以用什么来区分

    2024年02月14日
    浏览(71)
  • 微信小程序登录适配(2023年最新)

    众所周知,微信小程序开发文档更新那不是一般的快,开发者都来不及去适配 😭 今天就来说说登录这一块到底改了哪些地方,以及怎么去适配 我们先来看看更改了哪些? 先放小程序登录文档这块更新的公告:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56

    2024年02月11日
    浏览(51)
  • uniapp微信小程序最新登录获取头像、昵称

    由于微信官方wx.getUserProfile 接口的回收,以后不能通过wx.getUserProfile来返回用户信息,只能自己手动获取用户头像和昵称的信息。  针对此问题有以下解决方法: 在点击登录时用一个弹窗设置头像和昵称,如图:  使用button设置open-type=\\\"chooseAvatar\\\"来获取头像,至于button更多的效

    2024年02月11日
    浏览(50)
  • 2023最新使用微信小程序完成一键授权登录

    前言: 使用开发工具:小程序。在我这一篇已经详细介绍了小程序的安装介绍今天我给大家带来的是微信的一键授权登录,保存用户信息,退出的功能!!!希望看完了这篇博客能够对你有帮助!!! 效果: 登录获取到用户信息: 思路 :点击按钮获取到用户信息(调用方

    2024年02月08日
    浏览(74)
  • Java后台实现网站微信扫码登录功能,获取用户openid,及微信用户信息(小程序码方案),关联微信小程序(个人主体小程序也可以)

    目录 前言 下面展示操作流程 注册微信小程序 通过后台获取小程序码 前端处理 时序图理解 方案实现步骤 前言 很多业务场景之下我们需要实现  微信扫码登录  的需求,如: 同步网站与小程序的用户数据 。 需要获取用户微信相关基本信息,如头像、id等 实例:小程序上的

    2024年02月02日
    浏览(58)
  • 最新版微信小程序授权登录(自定义头像昵称)

            根据官方微信小程序开发关于登录授权API的调整,自 2022年10月25日起有关API接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。(如下图所示) ​ ​ ​ ​ button标签中将open-type=\\\"chooseAvatar\\\"是用来设置用户头像,并且获得一个临时路径。 js代

    2024年02月12日
    浏览(51)
  • 微信小程序的一键登录功能

    微信小程序一键登录功能通常使用微信开放平台提供的开放接口实现。以下是实现步骤: 在微信开放平台创建应用并获取AppID和AppSecret。 在小程序中引入微信开放平台提供的js-sdk,并在app.js文件中初始化: 在小程序中添加一键登录的按钮,并在按钮的点击事件中调用微信开

    2024年02月08日
    浏览(42)
  • 微信小程序 - 2023年最新版手机号快捷登录详细教程

    最近开发公司手机快捷登录的功能,花费了不少时间,这里附上详细教程。 这里以海底捞小程序的图片为例,如有侵权请联系小编删除。 1、如果在微信开发者工具弹出下边的提示,不要慌张,用真机预览,其实是生效的。

    2024年02月09日
    浏览(71)
  • 若依整合微信小程序登录功能

    在网上很难搜索到若依来整合微信小程序登录的功能,自己就通过自己的理解整合了一下。这也是很久以前写的了,只是实现了功能,但登录逻辑不太好,改动也比较大。现在会看,感觉应该可以直接用若依注册用户接口来做微信小程序登录的功能。因为考研了,不想再去想

    2024年02月11日
    浏览(39)
  • 最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)

    源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有变现模式,它的盈利方式挺直接了当的,就是卖会员的,只要无脑

    2024年02月08日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包