微信小程序——校园活动地图后端开发日志(2)

微信小程序后端开发日志(2)

我差不多已经是一条废咸鱼了

这次写的有点晚,主要是总结一下第一天抱团编程的结果。
结果就是,忙活一下午没有结果。

任务是完成用户绑定账号及登录的操作。如果用户微信号未绑定学号,则进入学号密码登录绑定页面,登录成功后会将该学号绑定到微信号上,下次进入的时候向服务器发送微信号直接进入程序功能界面,自动完成登录。

但当然现实是不会这么简单的。微信提供的接口是在客户端中使用wx.login()得到登录凭证code,将code发送到会话管理服务器,会话管理服务器再向微信服务器换取openid和session_key,openid就是一个微信号的唯一标识符。

一开始我直接使用wafer-java的demo,其中使用了com.qcloud.weapp.authorization中的LoginService来管理登录服务,看似灰常正确,灰常有道理,然鹅,用demo的代码完全跑不起来,一直返回“请求头不包含X-WX-Code,请配合客户端SDK使用”。并且百度根本找不到任何相关的内容,然后我尝试性的使用了Google,就…直接搜到了。

原来是要将这些数据放在header里面进行请求,查了查api文档只有wx.getUserInfo()才能获取这些内容。不过想想就好奇怪啊,我只要获得用户的唯一id,却需要请求UserInfo。

后来在文档中看到code换取session_key中接口地址,于是决定放弃使用com.qcloud.weapp中的LoginService来进行身份验证,使用https接口https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code进行身份验证。质疑Demo是不是太老,它使用的方式连官方文档都要抛弃。

文档阅读要仔细!!!

一波已平,一波又起。接着碰到的是最棘手的40029 code错误问题,一直都没有解决。此处将锅甩给前端。

不要连续执行wx.login()!!!
两次执行login()中第二次获得到的code会无效!!!

以上

你可能感兴趣的:(小程序,后端开发)