微信小程序:登录

微信小程序之登录

       在使用微信提供的相关功能之前小程序需要进行登录操作,通过登录操作可以换取openId和session_key。其中openId是微信官方为每个使用者提供的唯一标识符,session_key被使用于加密相关操作。
       微信小程序针对登录过程给出了比较完善的说明,如下图:
在这里插入图片描述
       如图所示,微信小程序的登录首先客户端调用wx.login()方法获取到登录凭证code。然后再通过code获取用户openId和sessin_key信息。
       首先我们需要获取登录凭证:

              wx.login({
                success: res => {
                  // 获取到用户的 code 之后:res.code
                  console.log("用户的code:" + res.code);
                  // 可以传给后台,再经过解析获取用户的 openid
                  // 或者可以直接使用微信的提供的接口直接获取 openid ,方法如下:
                   wx.request({
                     url: //你的服务器
                       success: res => {
                        //登录成功的业务操作
                       }
                   });
                }
              });

       在登陆成功后,小程序客户端向服务器发送code,用于换取登录详细信息。用户服务器需要向微信指定段端口发送获取请求。该过程如下:

//构建请求参数
		Map<String, String> map = new HashMap<String, String>();
		map.put("appid", appid);//微信小程序appid
		map.put("secret", secret);//用户设置的密钥
		map.put("js_code", js_code); //获取订单code
		map.put("grant_type", "authorization_code");//固定格式
//以上参数构建成功后需要向“api.weixin.qq.com/sns/jscode2session”发送get请求
		String url = "api.weixin.qq.com/sns/jscode2session";
		String result = restMock.sendGet(url, map);//使用RestTemplate发送get请求并获取到返回结果
		/*
		* 该get请求将返回给用户json格式的三个参数:
		* openId:用户唯一标识符
		* session_key:会话密钥
		* unionid:未知
		* 
		* 处理请求结果的过程如下:
		* 如果openId字符串非空,则证明登录成功,可以返回登录成功给客户端,以便微信小程序进行后续操作。
		*/	
		JSONObject jsonObject = JSONObject.parseObject(result);
		String openid = jsonObject.getString("openid");
		String session_key = jsonObject.getString("session_key");

       截至到目前位置登录操作就完成了。总结一下微信小程序的登录过程。具体分析如下:

  1. 调用wx.login()方法,如果该方法成功了则将code发送给用户服务器
  2. 将code,appId,sercet,grant_type,四个参数以get请求的方式发送给“api.weixin.qq.com/sns/jscode2session”。值得注意的是该过程是以get请求进行的,因此以上四个参数实际上是被拼接到了url里面发送的。注意参数大小写。
  3. 获取get请求的返回结果,该结果是已json形式返回的,因此可以使用fastjson库来处理,返回的参数有三种,其中openid 和session_key需要着重关心。注意大小写!
       总体来说微信小程序的登录过程并不复杂,但是需格外注意的是参数上的大小写问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值