微信小程序 - 获取用户 openid

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

基本流程:

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

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

af5febc722fb8f787a611f01f570d9b2c55.jpg

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

直接上代码:

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 示例仅提供一个思路,具体的实现需要开发者根据自己项目来定。

 

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

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

转载于:https://my.oschina.net/hp2017/blog/1842404

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值