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

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


前言

因公司项目需要做微信小程序相关项目,故记录一下相关开发要点。
使用的是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: 小程序的appid
    appSecret: 小程序的appSecret
    msgDataFormat: JSON
    mchId: 商户号
    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 {

    @Autowired
    private WeChatProperties properties;

    @Bean
    public 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;
    }

    @Bean
    public 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 手机号码授权登录

关键代码如下(示例):文章来源地址https://www.toymoban.com/news/detail-494005.html

@RestController
@Slf4j
public class TestContoller {
    @Autowired
    private 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();
        }
    }
}

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

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

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

相关文章

  • 微信小程序登录+获取手机号码(前端+后端)

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

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

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

    2024年02月05日
    浏览(41)
  • 微信小程序如何获取用户手机号码?

    需求 在开发一款微信小程序时,通常需要用户进行微信登录,并获取用户的手机号码作为用户的唯一标识(userId)。虽然可以通过wx.login来获取用户的openid,但有时候需要获取用户的手机号码以提供更完善的个性化服务,因此探索获取用户手机号码的方式成为开发中的一个重

    2024年04月22日
    浏览(35)
  • 【微信小程序】纯前端获取用户手机号码

    2024.02.04更新 作者最近做了一个小程序项目,证明了纯前端获取手机号是不可以发布的,首先审核时会因为appsecret明文而不通过,就算你使用某种加密方法绕过审核,正式发布后在真机环境还是不可以使用的,所以本方法仅供练习使用,在第二步拿到code之后传给后端就可以了

    2024年02月03日
    浏览(39)
  • 微信小程序获取用户手机号码教程(前端+后端)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在开发微信小程序时,获取用户手机号码是常见的需求之一。本教程将为你详细介绍如何在前端和后端实现获取用

    2024年02月08日
    浏览(44)
  • 微信小程序获取用户手机号码教程(前端+后端)

    在开发一款微信小程序时,需要用户进行微信登录,获取用户的手机号码来作为用户的唯一标识(userId),于是探索获取用户手机号码的方式; (当然,通过wx.login来获取code,进而换取用户的openid也是可以的) 目前版本的微信小程序获取用户手机号码的方式如下: 前端开发

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

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

    2024年02月09日
    浏览(43)
  • 微信小程序(抖音小程序):手机号码解析失败解决方案

            在小程序开发中,可能需要用户授权获取用户信息,而用户信息涉及到手机号等敏感数据,一般的小程序开发平台,会将数据进行加密,然后通过对称加密算法进行加密解密。在获取手机号的过程中由于流程的理解错误可能会出现解密手机号失败的问题。本文介绍一

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

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

    2024年02月06日
    浏览(40)
  • uniapp支付宝小程序授权用户信息、授权手机号码

    需求说明 uniapp开发支付宝小程序授权用户信息和用户手机号码过程中,与微信小程序的API是有所不同的,相同是都是需要 button/button 点击事件触发。接下来简单说明一下支付宝小程序授权用户信息和用户手机号码的方法。 完成需求 授权用户手机号码前,需要先在支付宝开放

    2024年02月08日
    浏览(91)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包