当前位置:   article > 正文

java实现小程序获取微信登录,用户信息,手机号,头像_java获取微信小程序用户信息

java获取微信小程序用户信息
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import okhttp3.OkHttpClient;
  6. import okhttp3.Request;
  7. import okhttp3.Response;
  8. public class WeChatUtils {
  9. // 应用ID和应用秘钥,需要在微信公众平台中申请
  10. private static final String APP_ID = "YOUR_APP_ID";
  11. private static final String APP_SECRET = "YOUR_APP_SECRET";
  12. // 获取微信用户access_token的接口地址
  13. private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
  14. // 获取微信用户信息的接口地址
  15. private static final String USER_INFO_URL = "https://api.weixin.qq.com/sns/userinfo";
  16. /**
  17. * 获取微信用户的access_token
  18. *
  19. * @param code 微信小程序登录时获取的code
  20. * @return 包含access_token和openid的Map
  21. * @throws Exception
  22. */
  23. public static Map<String, String> getAccessToken(String code) throws Exception {
  24. OkHttpClient client = new OkHttpClient();
  25. String url = ACCESS_TOKEN_URL + "?appid=" + APP_ID + "&secret=" + APP_SECRET + "&code=" + code
  26. + "&grant_type=authorization_code";
  27. Request request = new Request.Builder().url(url).get().build();
  28. Response response = client.newCall(request).execute();
  29. String responseStr = response.body().string();
  30. JSONObject jsonObject = JSON.parseObject(responseStr);
  31. String accessToken = jsonObject.getString("access_token");
  32. String openid = jsonObject.getString("openid");
  33. Map<String, String> map = new HashMap<>();
  34. map.put("access_token", accessToken);
  35. map.put("openid", openid);
  36. return map;
  37. }
  38. /**
  39. * 获取微信用户信息
  40. *
  41. * @param accessToken 用户的access_token
  42. * @param openid 用户的openid
  43. * @return 包含用户信息的Map
  44. * @throws Exception
  45. */
  46. public static Map<String, String> getUserInfo(String accessToken, String openid) throws Exception {
  47. OkHttpClient client = new OkHttpClient();
  48. String url = USER_INFO_URL + "?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
  49. Request request = new Request.Builder().url(url).get().build();
  50. Response response = client.newCall(request).execute();
  51. String responseStr = response.body().string();
  52. JSONObject jsonObject = JSON.parseObject(responseStr);
  53. String nickname = jsonObject.getString("nickname");
  54. String avatar = jsonObject.getString("headimgurl");
  55. String phoneNumber = jsonObject.getString("phoneNumber"); // 获取用户手机号需要用户在小程序内进行授权
  56. Map<String, String> map = new HashMap<>();
  57. map.put("nickname", nickname);
  58. map.put("avatar", avatar);
  59. map.put("phoneNumber", phoneNumber);
  60. return map;
  61. }
  62. }

在上面的代码中,首先定义了应用的AppID和AppSecret。然后,实现了获取微信用户access_token的方法getAccessToken()和获取微信用户信息的方法getUserInfo()。其中,getAccessToken()方法需要传入微信小程序登录时获取的code,会返回一个包含access_token和openid的Map;getUserInfo()方法需要传入用户的access_token和openid,会返回一个包含用户信息的Map,包括昵称、头像和手机号(获取用户手机号需要用户在小程序内进行授权)。

代码中使用了OkHttp库发送HTTP请求,并使用FastJSON库解析返回的JSON格式数据。具体实现过程中,首先构造了请求URL,并使用OkHttpClient创建一个Request对象。然后,调用execute()方法发送请求并获取响应。最后,使用FastJSON解析响应数据,并将需要的信息存放在一个Map中返回。

注意,在实际使用中,需要将代码中的YOUR_APP_ID和YOUR_APP_SECRET替换成在微信公众平台中申请的应用ID和应用秘钥。另外,需要在小程序中调用wx.login()方法获取code,并将code传给Java后台,以便获取access_token和用户信息。

以上是一个简单的示例代码,具体实现方式还要根据自己的需求和实际情况进行调整。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/388040?site
推荐阅读
相关标签
  

闽ICP备14008679号