微信小程序 - 获取用户 openid

在小程序中获取用户 openid 基本上是小程序开发面对的第一个问题,在这里分享下获取用户 openid 的简单例子。html

基本流程:

一、经过登陆调用接口 wx.login  获取临时登陆凭证 code ,并回传到开发者服务器 。java

二、后台使用 code、appid、appsecret 换取用户惟一标识 openid 和会话密钥 session_key。 (appid、appsecret 这2个值在开通微信公众号认证以后,能够在微信公众平台小程序后台获取)json

刚开始进入小程序调用登陆接口,不过如今小程序获取用户信息做出调整,若是登陆用到此接口,须要开发者对登陆作出调整参考获取用户信息接口调整 ,这里根据本身业务需求判断调用该接口,涉及到后台须要 iv 和 encryptedData 等解密用户信息等。小程序

直接上代码:api

App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: 'https://xxx/getOpenid',
            data: {
              code: res.code
            }
          })
        } else {
          console.log('登陆失败!' + res.errMsg)
        }
      }
    });
  }
})

后台简单使用 java服务器

@Controller
@RequestMapping("/xxx")
public class GetOpenidController {

	@Autowired
	private TransferService transferService;

	@RequestMapping(value = "/getOpenid")
	public void getOpenid(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=UTF-8");
		//这 2 个值在开通公众号认证以后,能够在微信后台获取
		String APPID = "xxx"; //小程序惟一标识
		String SECRET = "xxx"; //小程序的 app secret
		String code = req.getParameter("code");

		String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + APPID + "&secret=" + SECRET + "&js_code=" + code + "&grant_type=authorization_code";
		HttpUtil httpUtil = new HttpUtil();
		String openid = "";
		Map<String, String> map = new HashMap<String, String>();
		try {
			HttpResult httpResult = httpUtil.doGet(url, null, null);
			if (httpResult.getStatusCode() == 200) {
				com.google.gson.JsonParser jsonParser = new com.google.gson.JsonParser();
				JsonObject obj = (JsonObject) jsonParser.parse(httpResult.getBody());
				openid = obj.get("openid").getAsString();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (openid != "") {
			map.put("openid", openid);
			transferService.login(map); //保存用户信息
		}
	}
}

获取结果除了 openid 还有 session_key,可是切记获取会话密钥 session_key 能够保存在服务器或者用来解密信息。为了数据不被篡改,开发者不该该把 session_key 传到小程序客户端等服务器外的环境。微信

参考以上这个例子就能够获取用户 openid,代码写的有点 low 示例仅提供一个思路,具体的实现须要开发者根据本身项目来定。网络

 

水平有限,如有问题请留言交流!session

互相学习,共同进步 :) 转载请注明出处谢谢!app

相关文章
相关标签/搜索