開發小程序時遇到40029 code ,
我設計流程是根據wx.login生成的code 去我服務器上調用驗證接口 ,接口function里 自己請求微信服務器地址做驗證,驗證成功后 將登陸用戶的信息 一並保存進數據庫。但是在開發時卻總是提示無效code,網上都說是調用了二次 所以無效,但是看我代碼 是沒有調用兩次的。
通過分析微信小程序api,這是因為我在wx.login方法里 先調用了 wx.getUserInfo 再去請求我服務器的api ,這樣就導致了2次,getUserInfo 方法里也會自己請求微信服務器的。這樣一來 我就不能在login驗證時 一並將客戶端user信息存入數據庫。
遠程驗證api中有這樣的代碼會去請求微信服務器,用的是開源的 小程序框架組件。
WxMaJscode2SessionResult session = this.wxService.getUserService().getSessionInfo(code); if (session == null || session.getSessionKey().length() <= 0) { return null; } String sessionKey = session.getSessionKey(); String openId = session.getOpenid();
無奈,這設計 只能導致我改動代碼 ,需要二次調用遠程api。第一次調用login 驗證成功返回session key和openid,第二次調用save user api 保存用戶信息到數據庫。
