微信小程序手机号码授权登录

文章目录


一、微信小程序开发

目前个人的小程序无法使用手机号码授权登录,可以使用测试号进行开发

二、使用步骤

1.前端代码

代码如下(示例):

html 复制代码
<button open-type="getPhoneNumber" bindgetphonenumber="getUserPhoneNumber">立即登录</button>
javascript 复制代码
Page({

getUserPhoneNumber(event) {
    if(event.detail.errMsg != "getPhoneNumber:ok") {
      // 授权失败
      return false;
    }
    // 发起请求,进行授权登录
    wx.request({
      url: app.globalData.basePath + '/system/applet/login',
      data: {
        phoneCode: event.detail.code
      },
      method:'POST',
      success: res => {
        console.log(res.data);
        wx.setStorageSync('applet', res.data);
      }
    })
  }
}}

2.后台配置

java 复制代码
# 小程序配置
applet:
  appId: wx53fda****c6b0a3
  appSecret: ade99d6dca77****f52fecd5d35039b5
  grantType: authorization_code

3.后台代码

代码如下(示例):

java 复制代码
package com.ruoyi.system.domain.io;

public class AppletLoginInput {

    private String phoneCode;

    private String iv;

    private String encryptedData;

    public String getPhoneCode() {
        return phoneCode;
    }

    public void setPhoneCode(String phoneCode) {
        this.phoneCode = phoneCode;
    }

    public String getIv() {
        return iv;
    }

    public void setIv(String iv) {
        this.iv = iv;
    }

    public String getEncryptedData() {
        return encryptedData;
    }

    public void setEncryptedData(String encryptedData) {
        this.encryptedData = encryptedData;
    }
}
java 复制代码
package com.ruoyi.system.domain.io;

public class AppletLoginOutput {

    /**
     * token信息
     */
    private String token;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}
java 复制代码
/**
 * 微信小程序手机号码授权登录
 * @param input
 */
@Anonymous
@PostMapping("/login")
public AppletLoginOutput login(@RequestBody AppletLoginInput input) {
    AppletLoginOutput appletLoginOutput = new AppletLoginOutput();
    // 首先获取最新的token信息
    String tokenParam = "appid=" + appletConfig.getAppId() + "&secret=" + appletConfig.getAppSecret() + "&grant_type=client_credential";
    String tokenResult = HttpUtils.sendGet("https://api.weixin.qq.com/cgi-bin/token", tokenParam);
    JSONObject tokenJSONObject = JSONObject.parseObject(tokenResult);

    // 通过登录信息获取用户的手机号码
    // 获取token 信息
    String body = "{\"code\": \"" + input.getPhoneCode() + "\"}";
    HttpRequest post = HttpUtil.createPost("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + tokenJSONObject.getString("access_token"));
    post.header("Content-Type", "application/json");
    post.body(body);
    HttpResponse execute = post.execute();
    AppletResultModel resultModel = JSONObject.parseObject(execute.body(), AppletResultModel.class);
    String jsonString = JSONObject.toJSONString(resultModel);
    System.out.println(jsonString);
    // {"errcode":0,"errmsg":"ok","phone_info":{"countryCode":"86","phoneNumber":"178****3721","purePhoneNumber":"178****3721","watermark":{"appid":"wx53fda****1c6b0a3","timestamp":1754865784}}}
    return appletLoginOutput;
}

总结

人生物语:别哭泣,别叹息。悲伤唤不回逝去的时光。做一个简单的人,看得清世间繁杂却不在心中留下痕迹,保持平常心,简单,快乐。请别把我当傻瓜,有些事不是我不知道,只是我看在眼里,埋在心里。一个人最好记性不要太好,因为回忆越多,幸福感越少。

相关推荐
一 乐1 小时前
校园墙|校园社区|基于Java+vue的校园墙小程序系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
vx_bscxy3222 小时前
告别毕设焦虑!Python 爬虫 + Java 系统 + 数据大屏,含详细开发文档 基于微信小程序的民宿预约系统22398 (上万套实战教程,赠送源码)
java·spring boot·mysql·微信小程序·课程设计
LXA08092 小时前
在 UniApp 中为小程序实现视频播放记录功能
小程序·uni-app·音视频
千寻技术帮6 小时前
50015_基于微信小程序的红色旅游系统
微信小程序·小程序·源码·ppt·项目文档
sg_knight6 小时前
微信小程序中 WebView 组件的使用与应用场景
前端·javascript·微信·微信小程序·小程序·web·weapp
2501_9160074711 小时前
iOS性能调试工具终极指南,从系统底层到多端协同的全方位优化实践(2025版)
android·ios·小程序·https·uni-app·iphone·webview
2501_9159214311 小时前
iOS崩溃日志深度分析与工具组合实战,从符号化到自动化诊断的完整体系
android·ios·小程序·uni-app·自动化·cocoa·iphone
我很苦涩的17 小时前
使用微信小程序实现多格验证码效果
微信小程序·小程序
阿里花盘18 小时前
花店微信小程序怎么做,创建一个小程序需要多少钱
微信小程序·小程序
2501_9160088918 小时前
没有源码如何加密 IPA 实战流程与多工具组合落地指南
android·ios·小程序·https·uni-app·iphone·webview