小程序名:优化环境
问题复现:
线上正式运行中的代码,在一键登录,进行wx.login并只储存openId的情况下,发送请求到后台去进行数据存储,但是一直显示发送不出去,后台也接收不到对应的信息。
但是,相同的代码在真机调试中是可以正常进行的,我这边可以提供完整的代码
// pages/bangding/index.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
},
getUserProfile : function(e){
var sf = this;
wx.showLoading({
title: '请求中....',
})
//调用wx.login 接口
wx.login({
success: function(e){
//去后台换取sessionkey
sf.getSessionKeyByCode(e.code);
}
})
},
//用code去后台换取sessionKey
getSessionKeyByCode: function(code){
var sf = this;
var vo = {
appid : app.data.APP_ID,
code : code
}
wx.request({
url: app.data.baseUrl+"/loginCtr/wechatMiniAppLogin.action",
header: app.data.HEADER,
method: "get",
timeout: 15000,
data:vo,
success: function(e){
var res = e.data;
if( res.code === 1 ){
//调用去后台解析用户数据的接口
wx.getUserInfo({
success: function(e){
if( e.errMsg === "getUserInfo:ok" ){
//去后台换取用户信息
sf.do_login(e,res.data);
}
},
fail : function(e){}
})
}else{
wx.hideLoading();
wx.showToast({
title: '登录失败',
duration : 1*1000
})
}
},
fail : function(e){}
})
},
//微信登录
do_login : function(e,sessionKey){
var sf = this;
var vo = {
appid : app.data.APP_ID,
sessionKey : sessionKey,
signature : e.signature,
rawData : e.rawData,
encryptedData : e.encryptedData,
iv : e.iv
}
wx.request({
url: app.data.baseUrl+"/loginCtr/wechatMiniAppUserInfo.action",
header: app.data.HEADER,
method: "get",
timeout: 15000,
data:vo,
success: function(e){
var res = e.data;
if( res.code === 1 ){
//缓存登录凭证
wx.setStorageSync('authorization', res.data.Authorization.token);
//缓存用户openId
wx.setStorageSync('openId', res.data.openId);
//全局赋值
app.data.authorization = res.data.Authorization.token;
app.data.openId = res.data.openId;
//页面跳转到首页
wx.switchTab({
url: './../login/index',
})
}
},
fail : function(e){}
})
}
})
楼主有解决吗?也遇到了这个问题
服务器域名配置了么?
appid : app.data.APP_ID, 这块会报未定义吧。还是你把appid写成固定的了?
也可以打开调试界面看看
sf.do_login(e,res.data);像是在这部分出的问题,最新获取用户接口调整。比较麻烦