微信应用程序手机号码授权登录
最编程
2024-06-02 07:17:51
...
/**
* 微信小程序手机号码授权登录
* @param input
*/
@Anonymous
@PostMapping("/login")
public AppletLoginOutput login(@RequestBody AppletLoginInput input) {
AppletLoginOutput appletLoginOutput = new AppletLoginOutput();
// 首先获取最新的token信息
String tokenParam = "appid=" + appletConfig.getAppId() + "&secret=" + appletConfig.getAppSecret() + "&grant_type=client_credential";
String tokenResult = HttpUtils.sendGet("https://api.weixin.qq.com/cgi-bin/token", tokenParam);
JSONObject tokenJSONObject = JSONObject.parseObject(tokenResult);
// 通过登录信息获取用户的手机号码
// 获取token 信息
String body = "{\"code\": \"" + input.getPhoneCode() + "\"}";
HttpRequest post = HttpUtil.createPost("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + tokenJSONObject.getString("access_token"));
post.header("Content-Type", "application/json");
post.body(body);
HttpResponse execute = post.execute();
AppletResultModel resultModel = JSONObject.parseObject(execute.body(), AppletResultModel.class);
String jsonString = JSONObject.toJSONString(resultModel);
System.out.println(jsonString);
// {"errcode":0,"errmsg":"ok","phone_info":{"countryCode":"86","phoneNumber":"178****3721","purePhoneNumber":"178****3721","watermark":{"appid":"wx53fda****1c6b0a3","timestamp":1754865784}}}
return appletLoginOutput;
}