完美集成原生微信登录以及非常规问题解决(白屏,闪退假象,注册失败,刷新access_token)

激动人心,公司项目要做微信登录,第一次做是真的难受啊,尤其是微信的官方文档,简直不能忍,各种问题。纠结了很久以后终于摆弄好了,需要的话尽管拿(禁止转载)

流程无非就是申请账号,注册应用什么的罗罗嗦嗦一大堆,简直没用,直接干货

提一下,填写应用信息的时候需要填写的是MD5,不是SHA1也不是SHA2,这三个怎么获取自己百度以下吧,特别说明MD5填小写,并且去掉冒号:

个人理解的流程(急需开发的就可以看我的了),尽量写的详细,供大家参考,会写出自己碰壁的地方

1、添加微信SDK依赖,在官方文档可以清楚看到(官方的https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN),也就是在应用的gradle(也就是app文件夹下的gradle)中添加依赖,如下:

dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

官方有两个,第一个是有统计功能,需要的话就添加第一个

2、在应用Application的onCreate方法中注册微信

这里说明以下createWXAPI方法的第三个参数,这个参数表示是否去检查应用签名(这个应该都懂吧)

至此第一大步已经完成了,貌似还没有遇到坑,我们继续。

3、开始拉起授权

至此请求授权完成了三分之一了,这仍然还没出现神坑,别着急,马上重头戏来了

4、我们要根据官网的描述,在我们的应用包名文件夹下创建wxapi文件夹并创建WXEntryActivity

在manifest.xml中设置一些参数

theme是为了实现下面说的第二种情况写的。

小伙伴们要注意了,从这里要看清楚每一步,这个activity比较特殊我们分两种情况考虑

第一种情况我们想要看到授权界面(就是我们平时用别的app,有一个界面让我们点击按钮授权)(处理和第二种情况一样,只不过有真是界面而已)

另一种情况就是“不显示这个界面”,我没有去显示这个界面

5、重头戏

 

这上面我添加的每一个注释都尤其重要,仔细看

6、到这里其实我们已经拿到了授权结果,没想到吧,然后第二个大坑也来了,仔细看

做过的同学别人我不知道,反正我这个菜鸟很懵逼,这个code到底怎么来

7、接着我们就可以去获取access_token了

这个还好,如果对网络请求不熟悉的遇到我算你走运了(得瑟一下)

这里代码太多了,就不贴了,需要的在下面下载

但是还要说明以下,官网用的是get请求,我用的是post,但是也能正常执行,我就没改,考虑到WX_APP_SECRET不能暴露,所以就选择了post请求。

8、授权成功后我们是不是就可以去获取微信的用户数据了呢,并不是,如果你的access_token失效了怎么办,我们再来看官网,有个refresh_token,可以正合我意,在刷新之前我们需要去判断之前获取的access_token有没有过期(看demo)

如果失效就去刷新access_token,如果未失效,则去请求微信用户个人数据,请求成功后就剩下请求你们的后台开发人员写好的微信登录借口了

9至此微信登录已经完成

下面说说我遇到的一些坑

除了上面说过的

(1)、在官网注册的时候我们填写的MD5只能填写一个(发布版或者开发版),如果在debug版上进行测试,那么MD5就写开发办的,反之同理

(2)、如果授权失败,改好代码还是失败,卸载应用重装(亲测有效)

(3)、白屏的问题(白屏就是如果是透明界面授权成功会有一个白色界面的闪现,用我的方法即可解决,就是设置主题不对,没别的)

(4)、最最最最大的坑,闪退假像,这个简直坑爹,由于我写的是透明界面,我再拉起授权的时候,也就是第3步结束后(当前界面是我们应用的登录界面),调用了finish(),这个界面销毁,出来一个WXEntryActivity,但是这个又是透明的,我们就看到了手机的桌面,然后测试就说是bug,我就看log,没有log啊(废话,成功了,上哪儿找失败的log),网络请求结束后就成功了,就是这样,一会儿网速快,一会儿网速慢,让我觉得很莫名其妙(这个就是开发经验的问题了,这个收获很大)

(5)、关于注册的WX_APP_SECRET,尽量不要放在客户端,防止别人反编译获取

(6)、开发一定不能着急,一着急就出错,切记

(7)秉着开源精神,资源下载只需要你1积分,没办法选择0积分,不然一份我都不想收的

https://download.csdn.net/download/xiaomi_0/10756086

 

 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值