天天看點

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問題)

繼續閱讀