使用原生开发工具实现。
1.用户进入小程序,在app.js里先读取缓存中的userid,若存在,则表示为老用户;若不存在,则调用wx.login(),得到一个临时的code,通过request请求将code发送到服务器上,
2.服务器去访问微信服务接口,微信接口服务会返回用户的openid
3.在服务器中判断这一openid是否为新用户,若为新用户,创建该用户并返回其用户id(到小程序),若为老用户,返回该用户id到小程序。
4.小程序将用户id存入缓存中。方便后续的使用。
官方文档流程图如下:

这个code具有时效性,能用于区别用户,需要从小程序前端传到开发者服务器后端,再从后端传到微信服务器进行核验,来获取用户唯一标识openid和会话密钥 session_key。
对于小程序前端,所需要做的只有通过wx.login获取到code,并通过wx.request将code发送给开发者服务器。
同效果&分解
可见:参考部分链接1
1.wx.login()使用
在实际使用中,appid和密钥不需要由小程序端每次发送,服务器端自行配置使用就行了。
2.常见问题解决