天天看点

Android 关于微信原生登录和友盟第三方微信登录来获取code那些坑(40029问题)

如果你恰好集成了微信原生登录与友盟三方登录。那么可以继续往下看了。

问题描述:

本来在APP端使用openid就可以了的,结果未想到,后台要我们传一个Code过去,就是微信里面的Resp.Error.code这个 code

友盟登录里是直接获取到access_token,将微信信息给返回来。已经将使用过code了,而我使用的微信原生登录,也是用的同一个WXEntryActivity,故再次使用这个code 的时候,会报:code已经使用过一次,不可再使用第二次的错误了。

错误信息如下:

{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}
           

问题解决:

一般的,我们会在Application中进行友盟的初始化,例如下面这一行

PlatformConfig.setWeixin("wx96XXXXXXdb68cf", "f9eacd5b25e2XXXXXX8c040589cef");
           

那么问题来了,我们在一个APP中既需要用到微信原生登录,又得用到友盟分享,怎么弄呢?那么解决的办法就是,在使用友盟分享的时候,进行友盟分享的初始化,而不是在Application中进行初始化。

这样友盟微信登录就无法拦截到原生微信登录的code了。

再多说几句:

微信登录和分享的回调类别都是WXEntryActivity这个类,区分是分享还是登录的字段是 onResp(BaseResp baseResp)中的

baseResp.getType() 1是登录 2是分享

具体原因我跟踪看了下

友盟分享也在自己的api里设置那二个参数,如果我们设置为空的话 他就无法拦截了。

友盟分享里面的unregister()这个函数解绑分享功能 和 删除授权的那个函数

deleteOauth()我都调用了,无法解决code被拦截使用的问题! 被这个问题折腾的蛋疼,特此记录…

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

更多资源请访问:

超详细图文搭建个人免费博客

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序

Android 关于微信原生登录和友盟第三方微信登录来获取code那些坑(40029问题)

继续阅读