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

15 篇文章 0 订阅

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

1、前端获取手机号

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

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

2、@getphonenumber必须全部小写

// 微信一键登录事件
async function wxLogin(e) {       
    loading.value = true;
    try {
      const result = await wxNumberLogin({
        appid: getAppId(), // 微信小程序APPID
        code: e?.detail?.code,
        openId: openId.value, // 微信小程序openID  
      });
      if (isRespondSuccess(result)){
        const from_url = Taro.getCurrentInstance().router?.params["from_url"];
        if (from_url && (from_url !== 'undefined')){
          Taro.reLaunch({url: from_url});
        } else {
          Taro.switchTab({url: `${ROUTER_ENUM.PAGE_HOME}`});
        }
      }
    } finally {
      loading.value = false;
    }
}

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

2、后台自动注册账号

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

public CommonResult<UserToken> getPhoneNumberRegister(String code, String appid, RegisterParams params) {
    String urlGetPhoneNumber = WxPlatformConstants.CODE_GET_PHONENUMBER
            .replaceFirst("ACCESS_TOKEN", getAuthAccessToken(appid));
    Map<String, String> map = new HashMap<>();
    map.put("code", code);
    String result  = HttpUtil.doPostUseJsonParams(urlGetPhoneNumber, map, HttpCharset.UTF8);
    log.info("getPhoneNumber_result:" + result);
    JSONObject object = JSON.parseObject(result);
    JSONObject phoneObject = object.getJSONObject("phone_info");
    String phone = phoneObject.getString("phoneNumber");
    params.setMobile(phone);

    return sysUserService.register(params, false); // 不需要校验验证码
}

1、 常量参数CODE_GET_PHONENUMBER :

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

2、微信返回的参数:

{
    "errcode":0,
    "errmsg":"ok",
    "phone_info": {
        "phoneNumber":"xxxxxx",
        "purePhoneNumber": "xxxxxx",
        "countryCode": 86,
        "watermark": {
            "timestamp": 1637744274,
            "appid": "xxxx"
        }
    }
}


 新时代农民工

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sg_knight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值