微信小程序获取用户手机号码教程(前端+后端)

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

1.背景介绍

在开发一款微信小程序时,需要用户进行微信登录,获取用户的手机号码来作为用户的唯一标识(userId),于是探索获取用户手机号码的方式;

(当然,通过wx.login来获取code,进而换取用户的openid也是可以的)

目前版本的微信小程序获取用户手机号码的方式如下:

前端开发参考:手机号快速填写组件 | 微信开放文档

后端开发参考:

手机号快速填写 | 微信开放文档

步骤如下:

①利用手机号快速填写的功能,将button组件 open-type 的值设置为 getPhoneNumber

②用户点击按钮,弹出申请获取用户手机号的弹窗:

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

③如果用户点击允许,则可以通过bindgetphonenumber事件回调获取到动态令牌code(注意这里的code和wx.login的code不一样,而且获取用户手机号码不需要提前调用wx.login获取code了)

④把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号

注意一点,获取手机号的功能好像只允许经过认证的小程序使用,如果未认证只能使用测试号才可以

否则便会报错:

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

2.前端代码

开发环境:Uniapp框架

微信小程序调试基础库的版本:2.32.1

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

基本思路:通过按钮绑定监听事件,获取用户授权,得到code,传到后端换取用户手机号:

代码如下:

按钮:

<button open-type="getPhoneNumber" class="login_button" @getphonenumber="login" v-show="!logged">登录</button>

login函数:

//登录按钮
login(e) {
  console.log(e)
  var detail = e.detail
  if (detail.errMsg == "getPhoneNumber:ok") {
    console.log("用户同意授权")
    var code = detail.code
    uni.request({
      url: "http://localhost:8081/getPhoneNumber", //调用接口
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: {
        code: code, //请求体中封装code
      },
      success(e) {
        console.log(e)
        var userId = e.data.phone_info.purePhoneNumber;
        uni.setStorage({
          key: "userId",
          data: userId,
          success() {
            uni.switchTab({
              url: "../../pages/homePage/homepage"
            })
          }
        })
      },
      fail(e) {
        uni.showModal({
          title: "错误!",
          content: "网络错误!",
          complete() {
          }
        })
      }
    })
  }
}

3.后端代码

开发环境:springboot

开发工具:idea

如果对于idea创建springboot项目有任何问题,可以参考的这一篇文章的后端代码部分:

百度翻译API使用教程(前端+后端)_THE WHY的博客-CSDN博客

代码展示如下:

@RestController
    public class PhoneNumberController {

        @PostMapping("/getPhoneNumber")
        public Object getPhoneNumber(@RequestBody Map<String,Object> data)
        {
            //通过appid和secret来获取token
            //WXContent.APPID是自定义的全局变量
            String tokenUrl = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", WXContent.APPID, WXContent.APPSECRET);
            JSONObject token = JSON.parseObject(HttpUtil.get(tokenUrl));

            //通过token和code来获取用户手机号
            String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token.getString("access_token");

            //封装请求体
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("code", data.get("code").toString());

            //封装请求头
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);

            HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(paramMap,headers);

            //通过RestTemplate发送请求,获取到用户手机号码
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<Object> response = restTemplate.postForEntity(url, httpEntity, Object.class);

            //返回到前端展示
            return response.getBody();
        }
    }

4.结果展示

在我的前端代码中有缓存用户id的功能,如果成功登录,即可在缓存中查看到用户id,如下:

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

5.补充:获取用户头像

微信小程序获取用户信息的功能好像挺离谱的,一直改来改去,目前大多是通过点击头像申请获取微信头像来实现

<button class="mine_avatar_wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
  <image class="mine_image" :src="avatarUrl"></image>
</button>

通过open-type绑定选择用户头像的功能,然后点击按钮即可弹出弹窗:

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

而onChooseAvatar函数则是获取到微信头像后渲染到页面上

onChooseAvatar(e)
	{
			this.avatarUrl = e.detail.avatarUrl
			uni.setStorageSync('avatarUrl',this.avatarUrl)
	},

这里选择使用用户头像即可修改用户头像为微信头像:

微信小程序 获取手机号,全栈,Java Web,微信小程序,小程序,前端

如果有什么问题,欢迎留言讨论,作者也是初学者,如果有错误的话欢迎指正~文章来源地址https://www.toymoban.com/news/detail-526278.html

到了这里,关于微信小程序获取用户手机号码教程(前端+后端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序登录及获取手机号码

    前端:微信先授权登录后再授权获取手机号码 后端:先微信登录获取openid返回前端,前端再传递手机号码code给后端获取手机号码并在本地数据量注册用户信息,需提供2个接口 第一步:先通过code微信授权登录获取openid 第二步:根据app_id和app_secret获取access_token 第三步:根据

    2024年02月12日
    浏览(68)
  • 微信小程序登录+获取手机号码(前端+后端)

    上面这张是微信小程序官方原图,登录流程如上图所示,下面一步步进行以及说一下碰到的坑。 1.wx.login()获取code         调用微信小程序官方提供的方法获取code提供给后端用以换取session_key、openid。         注意:code只能使用一次就会失效,且有效期为5分钟 2.后端收到

    2024年02月12日
    浏览(59)
  • 微信小程序获取手机号码 phonenumber.getPhoneNumber 提示47001错误

    微信小程序获取手机号码 phonenumber.getPhoneNumber 提示47001错误 经过测试, 文档说的是body 类型 实际却是json类型 正确代码如下:

    2024年02月06日
    浏览(52)
  • 【微信小程序】新版获取手机号码实现一键登录(uniapp语法)(完整版附源码)

    需求 如图,点击按钮,获取用户手机号实现一键登录,当然,用户也可以自行输入其他手机号进行登录 问题 要想获取用户手机号并不复杂,但由于近几年微信小程序获取手机号的api进行了更新,当前很多帖子使用的仍是旧的方式,先调wx.login()获取code,iv,等等加密数据, 给到

    2024年02月05日
    浏览(53)
  • 微信小程序授权手机号码登录

    因公司项目需要做微信小程序相关项目,故记录一下相关开发要点。 使用的是binarywang工具包,版本为4.1.0。 后端框架使用springboot 更多其他功能使用推荐查看https://github.com/binarywang/binarywang 3.1 微信小程序开发的相关配置 在application.yml文件中配置 3.2创建配置文件 代码如下(示

    2024年02月09日
    浏览(58)
  • 微信小程序-授权登录(手机号码)

    template     view class=\\\"work-container\\\"         view class=\\\"login\\\"             view class=\\\"content\\\"                 button class=\\\"button_wx\\\" open-type=\\\"getPhoneNumber\\\" @getphonenumber=\\\"getPhoneNumber\\\"                     u-icon name=\\\"weixin-fill\\\" color=\\\"#FFFFFF\\\" size=\\\"50\\\"/u-icon                     

    2024年02月06日
    浏览(55)
  • 微信小程序开发笔记 进阶篇⑥——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之后)

    微信小程序开发笔记——导读 大部分微信小程序开发者都会有这样的需求: 获取小程序用户的手机号码 。 但是,因为小程序用户的手机号码属于重要信息,为了安全,所以需要如下一系列较为复杂的方法和步骤。 我前期主要通过小程序云的方法获取用户手机号码,后面 因

    2024年02月03日
    浏览(49)
  • 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    微信小程序开发笔记——导读 大部分微信小程序开发者都会有这样的需求: 获取小程序用户的手机号码 。 但是,因为小程序用户的手机号码属于重要信息,为了安全,所以需要如下一系列较为复杂的方法和步骤。 我前期主要通过小程序云的方法获取用户手机号码,后面 因

    2024年02月09日
    浏览(49)
  • 【微信小程序】使用 Cryptojs 解密微信绑定手机号码

         很抱歉断更了一段时间,因为最近在做一个项目比较忙,正好项目中小程序板块需要解密手机号码来提交给接口,小程序中虽然提供了获取手机号按钮点击事件: bindgetphonenumber ,但是该事件的处理函数中只能获取到加密过的手机号码, 网上大部分教程都是使用 java,

    2024年02月09日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包