• Taro:微信小程序通过获取手机号实现一键登录


            本文介绍如果通过微信小程序的getPhoneNumber方法获取用户微信绑定的手机号并自动注册登录。

    1、前端获取手机号

    1. <template>
    2. <nut-button size="large" block color="#1890FF" :loading="loading" openType="getPhoneNumber" @getphonenumber="wxLogin">微信一键登录nut-button>
    3. template>

    1、按钮类型 openType 指定 "getPhoneNumber"  

    2、@getphonenumber必须全部小写

    1. // 微信一键登录事件
    2. async function wxLogin(e) {
    3. loading.value = true;
    4. try {
    5. const result = await wxNumberLogin({
    6. appid: getAppId(), // 微信小程序APPID
    7. code: e?.detail?.code,
    8. openId: openId.value, // 微信小程序openID
    9. });
    10. if (isRespondSuccess(result)){
    11. const from_url = Taro.getCurrentInstance().router?.params["from_url"];
    12. if (from_url && (from_url !== 'undefined')){
    13. Taro.reLaunch({url: from_url});
    14. } else {
    15. Taro.switchTab({url: `${ROUTER_ENUM.PAGE_HOME}`});
    16. }
    17. }
    18. } finally {
    19. loading.value = false;
    20. }
    21. }

    code:手机号获取凭证:动态令牌。可通过动态令牌换取用户手机号。

    2、后台自动注册账号

            后台根据前端传入的code获取手机号并自动将手机号注册为账号。

    1. public CommonResult getPhoneNumberRegister(String code, String appid, RegisterParams params) {
    2. String urlGetPhoneNumber = WxPlatformConstants.CODE_GET_PHONENUMBER
    3. .replaceFirst("ACCESS_TOKEN", getAuthAccessToken(appid));
    4. Map map = new HashMap<>();
    5. map.put("code", code);
    6. String result = HttpUtil.doPostUseJsonParams(urlGetPhoneNumber, map, HttpCharset.UTF8);
    7. log.info("getPhoneNumber_result:" + result);
    8. JSONObject object = JSON.parseObject(result);
    9. JSONObject phoneObject = object.getJSONObject("phone_info");
    10. String phone = phoneObject.getString("phoneNumber");
    11. params.setMobile(phone);
    12. return sysUserService.register(params, false); // 不需要校验验证码
    13. }

    1、 常量参数CODE_GET_PHONENUMBER :

    CODE_GET_PHONENUMBER = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN";

    2、微信返回的参数:

    1. {
    2. "errcode":0,
    3. "errmsg":"ok",
    4. "phone_info": {
    5. "phoneNumber":"xxxxxx",
    6. "purePhoneNumber": "xxxxxx",
    7. "countryCode": 86,
    8. "watermark": {
    9. "timestamp": 1637744274,
    10. "appid": "xxxx"
    11. }
    12. }
    13. }


     新时代农民工

  • 相关阅读:
    css绘制三角形
    电容笔做的比较好的品牌有哪些?高性价比电容笔测评
    Vision-Dialog Navigation和Vision-and-Language Navigation简单总结
    【全国数据】中国乡镇级矢量面状数据(shp)
    数据结构:ArrayList类和顺序表
    软件测试<用例篇>
    将scut-seg标签转化成通用coco标签
    Learn Prompt-ChatGPT 精选案例:广告文案
    颠覆者:Telegram 凭借源自中国的云基础设施成为超级应用
    Linux中安装配置Mysql详细步骤
  • 原文地址:https://blog.csdn.net/sg_knight/article/details/126901115