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

本文详细介绍了如何在微信小程序中通过前端按钮触发获取用户手机号的功能,包括前端使用Uniapp的代码示例,以及后端Springboot处理请求获取手机号的代码。还提到获取手机号功能对小程序认证状态的要求和获取用户头像的流程。
摘要由CSDN通过智能技术生成

1.背景介绍

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

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

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

前端开发参考:获取手机号 | 微信开放文档

后端开发参考:手机号快速验证组件 | 微信开放文档

步骤如下:

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

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

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

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

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

否则便会报错:

2.前端代码

开发环境:Uniapp框架

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

基本思路:通过按钮绑定监听事件,获取用户授权,得到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使用教程(前端+后端)-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,如下:

5.补充:获取用户头像

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

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


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

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

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

如果有什么问题,欢迎留言讨论,如果有错误的话欢迎指正,谢谢大家~

  • 69
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 微信小程序开发是一种基于微信平台的应用程序开发方式,可以在微信内直接运行的应用程序。它可以实现类似于APP的功能,但相比APP更加轻量、快速、易于开发和使用。 微信小程序的开发主要分为前端后端两部分。 前端开发是指通过使用小程序开发框架(如原生开发、wepy等)进行界面和交互的开发。开发者可以使用HTML、CSS和Javascript等技术进行整体的页面布局设计和交互逻辑的编写。通过小程序开发框架提供的API和组件,可以实现丰富的界面效果和功能。在前端开发中,可以通过调用后端接口获取数据或进行页面跳转等操作。 后端开发是指通过使用Java等编程语言进行服务器端的开发。在微信小程序中,后端开发主要用于数据的处理和管理。开发者可以通过后端开发来搭建服务器、编写API接口,实现数据存储和处理、权限控制、业务逻辑等功能。后端开发需要结合小程序前端的需求,定义数据的格式和访问方式,并与前端进行交互。 微信小程序开发前端后端的配合是整个开发过程中的重要环节。开发者需要根据产品需求和设计稿进行界面和交互的开发,并将数据以适当的格式传输给后端进行处理和管理。前后端的协作可以通过API接口进行,前端调用后端提供的接口,传递参数并获取数据。开发者可以根据具体需求和开发框架的限制进行功能开发和调试,最终实现微信小程序的各项功能需求。 总之,微信小程序开发需要前端后端的配合,前端负责界面和交互的开发,后端负责数据的处理和管理,两者相互合作,共同实现微信小程序的功能和效果。 ### 回答2: 微信小程序开发包括前端后端两个主要部分。 1. 前端开发:微信小程序前端开发主要使用HTML、CSS和JavaScript等技术,通过编写小程序页面的HTML结构、样式和交互逻辑来实现小程序的界面和功能。开发者可以使用微信提供的开发者工具进行开发和调试,还可以利用第三方框架如Vue.js、React等来简化开发流程。 在前端开发中,开发者需要了解微信小程序的基本组件和API,以及小程序的生命周期、页面间的跳转和传递数据等。同时,还需要掌握微信小程序的开发规范和设计原则,以保证用户体验和小程序的可靠性。 2. 后端开发:微信小程序后端开发主要使用Java等编程语言进行实现。后端开发者需要负责处理小程序前端发送来的请求,验证用户身份,获取和处理数据,并将结果返回给前端。 在后端开发中,开发者需要使用Java开发框架如Spring Boot、Spring Cloud等,搭建服务器环境并实现业务逻辑。此外,还需要与数据库进行交互,操作和管理数据。同时,为了提高小程序的性能和可靠性,开发者还需要进行性能优化、错误处理和安全防护等工作。 综上所述,微信小程序开发需要前端后端的配合合作。前端负责实现小程序的界面和用户交互,后端负责处理数据和业务逻辑。通过整合两者的能力,可以开发出功能完善、用户体验较好的微信小程序。 ### 回答3: 微信小程序是一种基于微信平台的应用程序开发模式,它具有轻量级、快速加载和便捷的特点。微信小程序开发涉及到前端后端两方面的技术。 在前端开发中,我们需要掌握HTML、CSS和JavaScript等基础技术,同时需要熟悉微信小程序提供的开发框架和API。前端开发主要包括页面布局、样式设计、交互逻辑实现等工作。通过使用微信小程序的框架和API,我们可以快速地开发小程序,并且能够提供良好的用户体验。 在后端开发中,我们通常选择使用Java语言进行开发。Java是一种常用的编程语言,具有广泛的应用领域和稳定的性能。后端开发主要涉及到数据处理、业务逻辑编写、接口开发等方面的工作。我们可以使用Java的一些开发框架和工具,如Spring、SpringBoot等,来进行后端开发。这些框架和工具提供了丰富的功能模块,可以帮助我们快速地构建小程序所需的后端服务。 总而言之,微信小程序的开发涉及到前端后端两方面的技术。前端开发主要负责小程序的页面设计和交互逻辑实现,后端开发则负责提供数据处理和业务逻辑支持。通过前端后端的协同工作,我们能够开发出功能完善、用户友好的微信小程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋の本名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值