最后
**一个零基础的新人,我认为坚持是最最重要的。**我的很多朋友都找我来学习过,我也很用心的教他们,可是不到一个月就坚持不下来了。我认为他们坚持不下来有两点主要原因:
他们打算入行不是因为兴趣,而是因为所谓的IT行业工资高,或者说完全对未来没有任何规划。
刚开始学的时候确实很枯燥,这确实对你是个考验,所以说坚持下来也很不容易,但是如果你有兴趣就不会认为这是累,不会认为这很枯燥,总之还是贵在坚持。
技术提升遇到瓶颈了?缺高级Android进阶视频学习提升自己吗?还有大量大厂面试题为你面试做准备!
提升自己去挑战一下BAT面试难关吧
对于很多Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些知识图谱希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
不论遇到什么困难,都不应该成为我们放弃的理由!
如果有什么疑问的可以直接私我,我尽自己最大力量帮助你!
最后祝各位新人都能坚持下来,学有所成。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
下面详细介绍微信小程序的微信登陆
第一步:获取登陆态code
微信登陆部分,首先需要使用微信小程序的api—— wx.login(OBJECT)来获取登录态
这个登陆态的作用是为了获取用户的openid(用户的唯一标识)
相关链接:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject
示例:官方示例
js:
//调用登录
wx.login({
success: function(res) {
console.log(res);
if (res.code) {
//发起网络请求
//doSomething
} else {
console.log(‘获取用户登录态失败!’ + res.errMsg)
}
},
fail: function(){
console.log(“启用wx.login函数,失败!”);
},
complete:function(){
console.log(“已启用wx.login函数”);
}
});
TIPS:
上面这段代码的console.log(res);输出wx.login(OBJECT)的success成功回调函数返回值res的内容如下:
情况一:
出现这个code:”the code is a mock one”是在项目没有使用appid的情况下返回的,正常不是返回这个的!!
情况二:
项目在绑定appID后才能成功返回登录态,正确的登陆态如下图所示:
第二步:将登陆态code发送给第三方服务器(即自家的服务器)
上面通过wx.login(OBJECT)获取了登录态后,接下来就是将code发送给第三方服务器
我们先看看微信登陆的序时图:
序时图所示,通过wx.login()获取了code后,就使用wx.request()发送code给第三方服务器(也就是自家的服务器)
下面用代码来进行讲解这一步如何操作
示例:官方示例
把wx.login获取到的res.code返回值,直接以参数的形式,发起网络请求发送登陆态给自家服务器
js:
//调用登录
wx.login({
success: function(res) {
console.log(res);
if (res.code) {
//就是在这里发起网络请求,使用wx.request(),将登陆态发送给自家的服务器上
wx.request({
url: ‘https://test.com/onLogin’,
data: {
code: res.code
},
method: ‘POST’,
header: {‘content-type’: ‘application/json’},
success: function(data){
}
})
} else {
console.log(‘获取用户登录态失败!’ + res.errMsg)
}
},
fail: function(){
console.log(“启用wx.login函数,失败!”);
},
complete:function(){
console.log(“已启用wx.login函数”);
}
});
如何使用微信小程序发起网络请求?
请看如下教程:微信小程序的网络请求 ——微信小程序教程系列(14)
第三步:code 换取 session_key和openid
登陆态发送给自家的服务器后,接下来就是后台进行操作。
下面我把 自家的服务器简称 后台,方便阅读(你知道我说的后台指的是我们自己的服务器,而不是微信的服务器就行)。
后台接收到登陆态后,由后台发起网络请求给微信服务器
备注:后台没有语言要求!!任意一门后台语言都可以。
接口地址:
https://api.weixin.qq.com/sns/jscode2session
参数说明:
备注:
appid和secret登陆微信公众平台,打开设置——开发设置,即可获取(app secret需要生成)。
grant_type是固定写法,值为authorization_code即可。
返回结果:
后台发送请求成后,腾讯服务器会返回session_key 和 openid,如下图:
成功返回的结果
失败返回的结果
第四步:生成3rd_session返回给客户端
第四步也是做后台中的操作!!
此时把微信服务器返回的session_key 和 openid保留在后台中,由于考虑安全性的问题,不要直接返回给客户端。
然后用操作系统提供的随机数算法生成一个新的session,微信把它叫做3rd_session。(注意:这个session要有足够的长度,建议有2^128种组合,即长度为16B;设置一定的时效性)
以3rd_session为名作为key,返回的session_key和openid作为值,保存在后台上。
最后只需要在后台,返回一个3rd_session给客户端即可。
以后客户端部分,就使用这个3rd_session发送给后台,后台接收3rd_session获取对应的session_key和openid,再通过session_key和openid判断对应的用户返回该用户相关的数据
备注:小程序用这种方法来代替浏览器自身发送的cookie,因为web的做法是服务器A会保存起访问登录接口的这个cookie到session中,当你再次访问其他接口的时候,服务器A首先会判断这个session,是否是之间的cookie从而知道是不是对应的用户。(http协议是一种短链接的关系,其特点是客户端发起请求链接到服务端,服务端返回数据,链接断开!因此之间是不会有任何数据的储存。)
示例:接上示例
js:
wx.login({
success: function(res) {
console.log(res);
if (res.code) {
wx.request({
url: ‘https://test.com/onLogin’,
data: {
code: res.code
},
method: ‘POST’,
header: {‘content-type’: ‘application/json’},
// 在发送请求成功的部分,返回的数据是后台返回的3rd_session
success: function(data){
console.log(data)
}
})
} else {
console.log(‘获取用户登录态失败!’ + res.errMsg)
}
},
fail: function(){
console.log(“启用wx.login函数,失败!”);
},
complete:function(){
console.log(“已启用wx.login函数”);
}
});
PS:
要是阅读到这里,有不明之处,请叫上后台的小伙伴一起过来阅读这篇文章
第三步,和第四步,要交给后台的同事去处理!!!
第五步:客户端保存3rd_session
回到客户端的工作了。
从第四步后台返回的3rd_session后,需要将3rd_session存入缓存中。
小程序提供了保存到本地缓存的api,使用非常简单。
(1)wx.setStorage(OBJECT)
传入key和data即可。
(2)wx.setStorageSync(KEY,DATA)
最后
今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
来学习,也可以分享给身边好友一起学习。
[外链图片转存中…(img-PB5xdoVh-1715834900411)]
【算法合集】
[外链图片转存中…(img-svCMvs1T-1715834900412)]
【延伸Android必备知识点】
[外链图片转存中…(img-XaXgpGVM-1715834900412)]
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!