网站推广.NET

网站推广.NET

最新新闻:您当前的位置:微信小程序> 微信小

来源:互联网

本文主要介绍使用springmvc基于Java语言的微信小程序的服务器端登录开发。

登录功能是小程序的必要功能。通过登录,我们可以在小程序中记录用户的某些行为。我们还可以隐约地在后台确认用户(小程序仅提供用户的昵称化身和化身的两个值不是唯一的。尽管获得的openid是唯一的,但它是由微信服务器生成的在我们自己的服务器的后台,并且不能与某个用户相关联

小程序登录过程

微信的正式文档详细介绍了登录过程,我们可以从中提取关键信息:

1 小程序客户端可以调用wx.login()接口进行编码

2 小程序客户端可以通过wx.request()与自己的服务器通信

3获取代码后,您的服务器必须与微信的服务器通信以获取openid和session_key

3生成一个随机值作为密钥,并使用openid和session_key作为该值来保持用户登录。

4服务器向小程序的客户端返回一个随机值,随后小程序的请求将伴随返回的随机值以确保用户的合法性

首先,我们必须首先构造一个GET请求,以实现我们自己的服务器与微信的服务器之间的通信:

public static String GET(String url){ String result = ""; BufferedReader in = null; InputStream is = null; InputStreamReader isr = null; try { URL realUrl = new URL(url); URLConnection conn = realUrl.openConnection(); conn.connect(); Map> map = conn.getHeaderFields(); is = conn.getInputStream(); isr = new InputStreamReader(is); in = new BufferedReader(isr); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { //异常记录 }finally{ try { if(in!=null){ in.close(); } if(is!=null){ is.close(); } if(isr!=null){ isr.close(); } } catch (Exception e2) { //异常记录 } } return result; }

通讯界面

我们在控制器中获取代码的值,然后检查appid和密码以完成通信接口。通过GET方法,我们完成了服务器与微信服务器之间的通信。

如果通信正常,我们可以解析结果以获取openid和session_key,然后生成唯一值作为key,并生成openid + session_key作为值来保存用户的登录状态,然后将唯一值返回给前端

Jedis jedis = new Jedis("localhost");String openid = openid;String session_key = session_key;String uid = UUID.randomUUID().toString();StringBuffer sb = new StringBuffer();sb.append(openid);sb.append(","+session_key);jedis.set(uid, sb.toString());return uid;

问题处理:

如果需要获取登录用户的用户名和昵称,则需要注意一个问题。如果昵称中有中文,则会出现乱码。这是因为微信按照中文的ISO-8859-1编码。我们需要的utf8编码,我们可以通过以下简单处理来解决在用户昵称中出现乱码的问题:

String nickNameDecode = new String(nickName.getBytes("ISO-8859-1"),"utf-8");