用Java写一个根据微信用户的code获取手机号的代码
时间: 2023-05-24 16:03:11 浏览: 437
微信小程序 获取手机号 JavaScript解密示例代码详解
A:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;
public class WeChatHelper {
private static final String APP_ID = "Your_App_ID"; // 你的微信应用ID
private static final String APP_SECRET = "Your_App_Secret"; // 你的微信应用秘钥
/**
* 获取微信用户的手机号
* @param code 微信用户登录后获取到的code
* @return 手机号
*/
public static String getPhoneNumber(String code) {
StringBuilder sb = new StringBuilder();
try {
// 获取access_token
String accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+APP_ID+"&secret="+APP_SECRET+"&code="+code+"&grant_type=authorization_code";
URL url = new URL(accessTokenUrl);
URLConnection conn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
Map<String,String> tokenMap = JSON.parseObject(sb.toString(), new TypeReference<Map<String, String>>(){});
// 获取用户信息
String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+tokenMap.get("access_token")+"&openid="+tokenMap.get("openid")+"&lang=zh_CN";
url = new URL(userInfoUrl);
conn = url.openConnection();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
Map<String,String> userMap = JSON.parseObject(sb.toString(), new TypeReference<Map<String, String>>(){});
// 返回手机号
return userMap.get("phone_number");
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
```
使用方法:
```java
String code = "xxxxxxxxxxxxxxxxxxxxx"; // 微信用户登录后获取到的code
String phoneNumber = WeChatHelper.getPhoneNumber(code); // 获取用户手机号
```
注意事项:
- 需要引入fastjson依赖;
- 需要替换APP_ID和APP_SECRET变量为你自己的微信应用ID和秘钥;
- 需要在微信开放平台设置授权回调域名,并将域名添加到小程序配置文件中。
- 需要在小程序端使用wx.login()方法获取用户登录的code。
阅读全文