微信小程序登录实现免费完整版
举报户:
if(!this.data.userId){
this.getSession();
}
},
// 获取登录的code
getSession(){
wx.login({
success:res =>{
if(res.code){
app.get(Api.getSession,{
code:res.code
}).then(res =>{
store.setItem("openId",res.openid);
}).catch(err =>{
console.log(err.message)
})
}
}
})
},这啥意思
【回复】这是调用小程序提供的登录方法。然后成功存储到store中,失败了就抛出错误
啊这厉害了:
登录有一点小问题,按照up的教程做了一下。
感觉还是有优化的地方,openid完全没有必要返回前端,后端仅接受一次性code即可。通过code来获取openid,如果用户表没有,则新建用户,与用户表id绑定。如果用户表有该openid,则登录成功,找到用户。
openid可以md5单向加密后存在表里,登录接口只需要用户的一次性code参数和用户的基本信息,这样的话就不怕冒充用户了。openid不应该放在接口参数里。
【回复】还有改进的地方,同一个用户在腾讯的四个平台下openid都不一样(如:公众号、小程序、安卓IOSAPP中的微信登录)。为了让用户再app中微信登录和在小程序中登录的是同一个账户。最好登录后匹配下这个openid有没有被绑定过,没被绑定过说明改用户在这个平台下第一次登录。就再进行一次手机号授权或者走自己业务进行一次手机号绑定操作。(当然了,也可以用unionid而不用openid,但是unionid需要进行两次授权,比较麻烦)
【回复】用户id建议用session存储,这样的话可以稍微修改一下request.js文件,使微信小程序支持cookie。
TypeHero:
store.js 文件里面,在setItem函数里调用了,this.getItem(module_name),但是getItem(key, module_name){}长成这样,module_name 没用到,看看函数在处理复杂数据的时候是不是写错了。
【回复】回复 @云加_刘云 :看了好几遍仔细考虑了你的代码我认为
let module_name_info = this.getItem(module_name);
第一次存储module_name_info是 undefined,应该这么改:
let module_name_info = this.getItem(module_name) || {};
这就对了。[微笑]
【回复】回复 @云加_刘云 :我是想问你怎么使用,就比如现在我要处理复杂数据,比较有疑问的是let module_name_info = this.getItem(module_name);这个语句去调用getItem()这个函数,getItem()函数有两个参数,但是很明显第二个参数就是处理let module_name_info = this.getItem(module_name);传过来的实参,很明显你虽然在getItem()第二个参数定义了处理方法但是并没有传入第二个参数。
说白了,getItem(key, module_name)第二个参数module_name你看传参了吗??怎么处理复杂数据可以直接给我个例子。这样比较好理解,thank you.
【回复】回复 @TypeHero :let module_name_info = this.getItem(module_name) || {};
我遇到这个问题了,还好看到你写的这个,谢谢[微笑]
意阳吼:
学到了!!!原来大厂封装的时候还会把手机信息写进去
涩小恋:
请问有没有源码,能分享一下吗[酸了][笑哭]
【回复】https://github.com/plter/WechatAppLoginCourse
这就是源码
【回复】回复 @TOP_YUNP_顶级云加 :谢谢
地处小虾米:
网络请求 怎么么有例子。我不懂怎么调用
【回复】使用 wx.request 函数,这是微信官方文档。https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html
LetusGo滑稽:
请问下post请求的话,哪些地方需要进行修改呢
【回复】回复 @bili_77097798699 :我也出现了同样的问题
【回复】回复 @前端-刘加 :代码直接用post请求报错啊,Cannot set property 'method' of undefined
【回复】post和get的区别就请求方法不同,传递方式有区别。其他的没区别的。这里不群分是小程序还是其他技术
山木月风:
有大佬知道怎么将router.push 里面的query数据取出来啊
【回复】回复 @火辣辣的月饼 :好好看文档。在你推过去页面的onLoad(options)这个options参数,包含路由里面的信息[OK]
【回复】研究了半天也没搞定。。 求解答
一个正在路上的程序员:
利用微信小程序云开发设计的小程序,感兴趣的看一看,用来入门刚刚好
https://github.com/nankailiang/MeditationClock
可以的话帮忙点亮一下收藏的小星星[呲牙]
bili_75162734695:
up你好,我照着敲了一个demo,编译器运行没问题,真机调试时提示ruter的页面地址not found,为什么啊?
【回复】回复 @bili_75162734695 :你肯定是手误写错了地址,能不能截图给我看看。
【回复】回复 @TOP_YUNP_顶级云加 :就是调试信息报的错,登录成功我进行页面跳转,使用了ruter映射,运用是成功了,因为映射的地址打印出来了,然而页面没有发生跳转编译器错误提示page ...not found
【回复】在微信中用调试模式运行小程序,可以从控制台看到具体的错误信息。
炸鸡波比:
router.push 要如何把数据传过去呢。。。
【回复】回复 @火辣辣的月饼 :在Page中的onLoad函数有一个传入参数,将它输入你就明白了。
onLoad: function(options) {
console.log(options);
}
【回复】router.push({
path: 'iwenblog',
query: {
tdee: 232,
cdcd: 3211,
}
}
砸缸正交:
零后端的我想问问api.js里面的地址是自己的还是固定的,我只是写来试试,给我写后端的那位仁兄没跟上来[大哭]
【回复】后端用的node.js,如果你没写过,可以直接拿走我的文件来用。真实场景中,会有后台接口给你的。
一之条京鱼:
请问up,我是一名大四即将毕业的学生,想毕业后做小程序开发,自己只有web开发经验,该怎样入门,学些什么[微笑]
【回复】回复 @前端-刘加 :今年估计能考上研究生,继续呆在学校还是轻松呀^_^
【回复】回复 @一之条京鱼 :从事前端的话,面试的时候,单独问小程序的也有但是不多,前端框架还是会一些的。例如Vue和React。随着项目越来越大,原生js维护越来越麻烦。但是用框架就容易一些。毕竟项目是需要迭代的,不是写完就再也不用管了。
【回复】回复 @前端-刘加 :up主,请问小程序前端目前就业情况怎么样,另外一定要学框架吗(比如iview+vue nodejs之类的),原生js不好吗还有就是码农的生活是不是真的很累