首页 > 编程语言 >23年9月最新微信小程序 手机号授权 (uniapp+盛派SDK) 帮你踩坑

23年9月最新微信小程序 手机号授权 (uniapp+盛派SDK) 帮你踩坑

时间:2024-08-15 13:54:03浏览次数:11  
标签:uniapp code 手机号 23 微信 程序 盛派 组件

一、背景 微信小程序手机号授权接口,从23年8月开始实行付费验证。 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getRealtimePhoneNumber.html   新版手机号授权说明如下: 自2023年8月28日起 【手机号实时验证组件】将需要付费使用。标准单价为:每次组件调用成功,收费0.04元。 【手机号快速验证组件】将需要付费使用。标准单价为:每次组件调用成功,收费0.03元。 两者组件区别是:

  1. 【手机号实时验证组件】:平台会对号码进行验证,但不保证是实时验证
  2. 【手机号实时验证组件】:在每次请求时,平台均会对用户选择的手机号进行实时验证
小程序后台付费管理页面,可以购买次数。如下图(每个小程序账号两个组件各有1000次体验额度,开发测试可以用)

 

用这个组件可以直接用code获取用户手机号,不需要再用SessionKey去解密手机号了。 正好要做一个小程序项目,打算用新的组件做用户授权。 前端使用:HBuilderX 开发 uniapp(可以生成H5 、APP 和 微信小程序等多家小程序) 后端使用:C# + 盛派SDK   二、划重点 1、手机号授权 getPhoneNumber 返回的 {code} 与 wx.login 返回的  {code}  作用是不一样的,不能混用且只能消费一次。 2、wx.login 是静默,可以在用户无感知的情况下用 {code} 换取用户的 【OpenId】。 3、手机号验证组件 会弹出授权窗口(如下图),只有用户点击同意才授权成功,可以拿到手机号。并且实时组件会发送验证码。 0 三、uniapp前端 uniapp 手机号页面代码 ,使用快速还是实时,看自己需求。 手机号快速验证组件: 复制代码
1 <template>
2     <view class="content">
3         <view class="text-area">
4             <button open-type="getPhoneNumber" @getphonenumber="GetPhoneNumber">手机号快捷登录</button>
5         </view>
6     </view>
7 </template>
复制代码 手机号实时验证组件(会有验证码): 复制代码
1 <template>
2     <view class="content">
3         <view class="text-area">
4             <button open-type="getRealtimePhoneNumber"@getrealtimephonenumber="getPhone">获取实时手机号码</button>
5         </view>
6     </view>
7 </template>
复制代码 JS代码: 复制代码
1 methods: {
2     //手机号授权
3     GetPhoneNumber: function(Res) {
4         let Container = this;
5         // 动态令牌
6         var Code = Res.detail.code;
7     },
8 }
复制代码 如果获取到的code为空,可能是用户拒绝了授权,可以弹出【友好提示】请求再次授权。 0 用户授权成功后,拿到的正确响应如下图: 我们只需要用到code 0 用户拒绝授权,会得到这样的响应: 0 四、C#服务端 这里用到盛派的微信小程序SDK,需要引用相关NuGet包:Senparc.Weixin.WxOpen 0   C#代码: 使用盛派SDK:BusinessApi.GetUserPhoneNumber(" 可以放微信accessToken或者微信小程序AppId "," 前端手机号授权得到的code ") 盛派官方推荐使用 微信小程序AppId,系统会自动管理密钥的周期(如果过期会再次更新) 复制代码
 1 try
 2 {
 3     #region code换用户手机号
 4     
 5      //code换用户手机号
 6      var UserMobilePhoneResult = BusinessApi.GetUserPhoneNumber("微信的动态令牌AccessToken", "前端拿到的code");
 7      //手机号
 8      String MobilePhone = MemberUserMobilePhoneResult.phone_info.purePhoneNumber;
 9      
10      #endregion code换用户手机号
11 }
12 catch (ErrorJsonResultException err)
13 {
14     return (XCXAccountUpdateMemberUserMobilePhoneResponse)SetExceptionError(MyResponse, err, -1, "手机号获取失败," + "错误原因:" + err.Message);
15 }
16 catch (Exception err)
17 {
18     return (XCXAccountUpdateMemberUserMobilePhoneResponse)SetExceptionError(MyResponse, err, -1, "手机号获取失败");
19 }
复制代码 我项目有windows service (服务) 在服务器上24小时循环检查,统一生成微信小程序动态令牌AccessToken,所以我这里用的密钥。接口地址:https://developers.weixin.qq.com/miniprogram/dev/OpenApIdoc/mp-access-token/getStableAccessToken.html 盛派SDK也可以,获取微信的小程序动态令牌AccessToken:
String AccessToken = AccessTokenContainer.GetAccessToken(WXXCXAppID);
如果遇到这样的错误,说明没有注册盛派相关服务。可以看官方解决文档:https://www.cnblogs.com/szw/p/9265828.html 0   注册代码: 在global.asax.cs 文件的 Application_Start() 方法中,加入代码(注意 using 两个命名空间:Senparc.CO2NET 和 Senparc.Weixin): 复制代码
 1 #region 注册(激活)盛派SDK 微信使用
 2 try
 3 {
 4      //设置全局 Debug 状态
 5      var isGLobalDebug = true;
 6      var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
 7      //CO2NET全局注册,必须!
 8      var register = RegisterService.Start(senparcSetting).UseSenparcGlobal();
 9      //设置微信 Debug 状态
10      var isWeixinDebug = true;
11      var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);
12      //微信全局注册,必须!
13      register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);
14     
15      //根据APPId判断获取
16      if (!AccessTokenContainer.CheckRegistered(WXXCXAppId))//检查是否已经注册
17      {
18          //注册小程序凭证 
19          await AccessTokenContainer.RegisterAsync(小程序的AppId, 小程序的密钥AppSecret, "【xxxxxxxx】小程序");
20      }
21  }
22 catch (Exception ex)
23 {
24     Senparc.CO2NET.Trace.SenparcTrace.SendCustomLog("系统日志", ex.Message);
25 }
26 #endregion 注册(激活)盛派SDK 微信使用
复制代码

标签:uniapp,code,手机号,23,微信,程序,盛派,组件
From: https://www.cnblogs.com/Alex80/p/18360769

相关文章

  • Python代码调用扣子平台大模型,结合wxauto优秀开源项目实现微信自动回复好友消息
    最近看到微信自动化回复,觉得很有意思,想接通大模型,自动回复好友消息。以下文章将对代码进行详细解释,文章末尾附源码1.在抖音扣子平台创建发布一个大模型智能问答助手,获取API-key等。在扣子平台有详细文档。2.wxauto安装。pipinstallwxauto项目地址是​​​​​​cluic/wxau......
  • 【题解】CF - 823C : Coin Troubles
    原题传送门题目大意有\(N\)种硬币,两种硬币的面值可能相同。给定\(q\)个限制,第\(i\)个限制由\(b_i\)和\(c_i\)组成,表示第\(b_i\)种硬币的数量严格大于第\(c_i\)种硬币的数量,且每个\(b_i\)与\(c_i\)都是唯一的。问在满足所有限制的情况下,有多少种可能的方案,能组......
  • uniapp movable-area、movable-view实现上下滑动
    效果图: <movable-areaclass="move-content"@touchmove.stop><movable-viewclass="move-incontent":style="'height:'+movableHeight+'rpx'":y="initY"......
  • 0233-Net-linux 收包流程
    环境Time2022-11-27WSL-Ubuntu22.04前言说明参考:https://github.com/leandromoreira/linux-network-performance-parameters目标了解linux系统接收网络数据包的具体流程。数据到达网卡网卡将光电信号还原成数据包。网卡校验如果不是在混杂模式下,网卡校验数据包中......
  • 0234-RLTK-创建主程序窗口
    环境Time2022-11-29WSL-Ubuntu22.04RLTK0.8.7前言说明参考:https://bfnightly.bracketproductions.com/rustbook/chapter_1.html目标RLTK表示RoguelikeToolkit,随机游戏工具包,使用这个包创建一个主窗口。Cargo.toml[package]edition="2021"name="game"vers......
  • 0235-RLTK-渲染静态字符
    环境Time2022-11-29WSL-Ubuntu22.04RLTK0.8.7前言说明参考:https://bfnightly.bracketproductions.com/rustbook/目标渲染一个主窗口,并且在窗口上渲染一些静态的字符。Cargo.toml[package]edition="2021"name="game"version="0.1.0"[dependencies]rl......
  • idea 2023.2安装教程(含激活码)长期有效
    申明:本教程IDEA补丁、补丁均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版!idea2023.2安装教程(含激活码)长期有效idea@ActivationCode使用流程Step1第一步下载IDEA软件Step2清空IDEA以前使用过激活方式Step3开始加......
  • java毕业设计-基于微信小程序的宠物服务中心平台系统,基于移动端的宠物中心系统,基于jav
    文章目录前言演示视频项目背景项目架构和内容获取(文末获取)具体实现截图用户前台管理后台技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目相关文件前言博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • 0232-IP 命令数据统计
    环境Time2022-11-25WSL-Ubuntu22.04前言说明参考:https://docs.kernel.org/networking/statistics.html目标前一节讲了ethtool命令获取网卡和统计信息,ip命令也可以获取一些数据包的信息。显示信息ip-s-slinkshowdevdev_name命令可以显示网卡的统计信息:root......
  • 0231-ethtool 常用参数
    环境Time2022-11-25WSL-Ubuntu22.04前言说明参考:https://man7.org/linux/man-pages/man8/ethtool.8.html目标通过ethtool命令的几个常用参数,来获取网卡的一些信息。显示信息ethtooldev_name,命令直接加上设备的名称:root@jiangbo12490:~#ethtooleth0Settingsfo......