文章目录

  • 前言
  • 一、需求描述:授权获取手机号码登录
  • 二、具体操作
    • 1.引入相关依赖
    • 2.步骤
    • 3.相关代码
      • 3.1 微信小程序开发的相关配置
      • 3.2创建配置文件
      • 3.3 实例化WxMaService
      • 3.4 手机号码授权登录

前言

因公司项目需要做微信小程序相关项目,故记录一下相关开发要点。
使用的是binarywang工具包,版本为4.1.0。
后端框架使用springboot
更多其他功能使用推荐查看https://github.com/binarywang/binarywang


一、需求描述:授权获取手机号码登录

用户授权手机号登录小程序。

二、具体操作

1.引入相关依赖

<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>4.1.0</version>
</dependency>

2.步骤

   通过code获取openid, sessionKey获取手机号需要encryptedData(加密用户数据),iv(加密算法的初始向量),sessionKey(会话密钥)

3.相关代码

3.1 微信小程序开发的相关配置

在application.yml文件中配置

test: wechat: appid: 小程序的appidappSecret: 小程序的appSecretmsgDataFormat: JSONmchId: 商户号mchKey:商户密钥certPath: 证书路径notify-url: 支付回调接口路径

3.2创建配置文件

代码如下(示例):

@Data
@ConfigurationProperties(prefix = "test.wechat")
public class WeChatProperties {/*** 微信小程序appid*/private String appId;/*** 微信小程序appSecret*/private String appSecret;private String  msgDataFormat;/*** 微信支付商户号*/private String mchId;/*** 微信支付商户密钥*/private String mchKey;/*** apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:    开头指定*/private String certPath;}

备注:其中商户号、商户密钥、证书都是后续微信小程序支付需要使用到。


3.3 实例化WxMaService

@Configuration
@EnableConfigurationProperties(WeChatProperties.class)
public class WeChatMaConfig {@Autowiredprivate WeChatProperties properties;@Beanpublic WxPayService wxPayService() {WxPayConfig payConfig = new WxPayConfig();payConfig.setAppId(StringUtils.trimToNull(properties.getAppId()));payConfig.setMchId(StringUtils.trimToNull(properties.getMchId()));payConfig.setMchKey(StringUtils.trimToNull(properties.getMchKey()));payConfig.setKeyPath(StrUtil.format("classpath:{}", StrUtil.trim(properties.getCertPath())));WxPayService wxPayService = new WxPayServiceImpl();wxPayService.setConfig(payConfig);return wxPayService;}@Beanpublic WxMaService initWxMaService() {WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();config.setAppid(StrUtil.trim(properties.getAppId()));config.setSecret(StrUtil.trim(properties.getAppSecret()));config.setMsgDataFormat(StrUtil.trim(properties.getMsgDataFormat()));WxMaService wxMaService = new WxMaServiceImpl();wxMaService.setWxMaConfig(config);return wxMaService;}}

3.4 手机号码授权登录

关键代码如下(示例):

@RestController
@Slf4j
public class TestContoller {@Autowiredprivate WxMaService          wxMaService;@GetMapping("/login")public void login(String code, String encryptedData, String iv) {try {WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(code);String openid = sessionInfo.getOpenid();log.info("openid:" + openid);String sessionKey = sessionInfo.getSessionKey();WxMaPhoneNumberInfo phoneInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);String phone = phoneInfo.getPhoneNumber();log.info("phone:" + phone);// 自己业务逻辑处理} catch (WxErrorException e) {e.printStackTrace();}}
}

微信小程序授权手机号码登录相关推荐

  1. Java - 微信小程序授权手机号登录

    最近做了一个关于商城的项目,B端选用若依的开源框架,C端还是vue前后端分离.其中C端主要是小程序的形式,所以想着来总结一下对接微信小程序登录中Java部分遇到的坑即代码分享! 废话不多说,直接上代码 ...

  2. Uniapp微信小程序授权的登录前后端全套

    前言 用Uniapp写的小程序要上线了,结果微信不过审,我也觉得很奇怪!驳回信息如下 这么一说的话确实,因为之前的写的代码获取用户openid的时候必须要是调试模式,我还以为是没上线的问题!这下好了, ...

  3. uniapp微信小程序授权登录和获取微信绑定的手机号码

    uniapp微信小程序授权登录和获取微信绑定的手机号码 弹出授权的弹框 <view class="weixinOk" @tap="getUserProfile&qu ...

  4. 微信小程序授权获取用户信息和手机号码

    微信小程序授权获取用户信息和手机号码 1.微信官方文档 登录:https://developers.weixin.qq.com/miniprogram/dev/framework/open-abili ...

  5. 微信小程序如何进行登录授权和获取用户信息

    微信小程序如何进行登录授权和获取用户信息

  6. 微信小程序授权登录 组件的封装

    微信小程序授权登录 组件的封装 新建components文件 写wxml文件 wxss部分 js部分 json引用 页面使用 页面js 授权登录 流程如下: 因为多个页面功能需要登录状态 所以做了个组 ...

  7. SpringBoot微信小程序授权登录

    SpringBoot微信小程序授权登录 一.appId 1.1.自己是管理者:微信公众平台,申请或登录自己的微信小程序,在开发者管理中即可看到 2.2.自己是开发者:让管理员将自己加入到小程序开发者管 ...

  8. 微信小程序授权登录取消授权重新授权处理方法 附可用代码

    微信小程序授权登录基本是小程序的标配了,但是官方的demo,取消授权后,就不能再重新点击登录,除非重新加载小程序才可以,这下怎么办? 我们可以先在首页引导用户点击,然后跳转到一个新的页面,在新的页面进 ...

  9. 最新版微信小程序授权登录(自定义头像昵称)

    根据官方微信小程序开发关于登录授权API的调整,自 2022年10月25日起有关API接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 "微信用户".(如下图所示) ​ 那我 ...

最新文章

  1. 2018全球智能+新商业峰会倒计时2个月,5000名AI从业者将出席
  2. macos降级_macOS Big Sur如何降级
  3. npm install是什么命令_了解npm
  4. 初入前端框架bootstrap--Web前端
  5. (C)libnet-发送arp/tcp/icmp数据包
  6. 开启IIS的WebGarden、WebFarm和StateServer之旅
  7. 创翼软件linux版本,创翼pc版下载-创翼电脑版下载v5.2.22.5226-软件爱好者
  8. 验证(Authentication)和授权(Authorization)(一):
  9. spark sql读取hive底层_SparkSQL读取Hive数据插入Redis
  10. POJ 3134 - Power Calculus (IDDFS)
  11. 接口各项性能测试指标
  12. 2022年上半年国家教师资格证考试
  13. flashfxp怎么传文件,小编教你flashfxp怎么传文件
  14. 7-20 打印九九口诀表(15 分)
  15. lrd热加载方式启动本地web服务(我用于从github把别人服务器代码拉倒本地去搭建自己的网络服务)
  16. 【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)
  17. 毕设 老年公寓管理系统
  18. java 微博第三方登录_Connect/login - 微博API
  19. 2019 年科技趋势最全汇总!
  20. django学习007-MVT的T(模板)的使用

热门文章

  1. ICloud没有密码怎么注销?
  2. 本地连接服务器搭建的 Redis 集群
  3. 为什么曾经优秀的人突然变得平庸?
  4. 想要快速来钱?你连这些竟然都不知道?!
  5. 嵌入式linux之go语言开发(九)关于嵌入式GUI
  6. fluent-bit日志上传到s3-efs
  7. NLP——day37 读论文:自然语言处理中的文本表示研究(综述类 2022 软件学报)
  8. python事件是什么意思_Python的事件处理
  9. 动态磁盘转回基本磁盘 | 警告你选定的操作会将基本磁盘转换为动态磁盘 | DiskGenius从镜像文件还原时,载入pmf文件,没有时间点
  10. php 防镜像网,wordpress防止网站被镜像实用方案教程