"errcode":40163,"errmsg":"code been used...報錯,做PC微信登錄時出現code been used...報錯問題


這是一個坑,一個巨坑,一個惡心的坑

 

出現這個問題的大概意思就是微信回調了兩次登錄接口,code使用了兩次,而在微信官方文檔上寫着code只能用一次,用來獲取access_token,但我TM看着就糊塗了,只能使用一次,你他媽干嘛回調兩我接口。

 

問題是這樣出現滴:我做的是pc微信登錄,第一步在java后端我拿到了生成微信登錄的code_uri,在頁面生成了一個微信登錄二維碼。

第二步:然后我用手機微信掃描二維碼,確認用微信登錄。然后微信就會回調我的登錄接口傳一些參數過來,好讓我用這些參數拿到微信用戶的信息。

大概流程是這樣,然后我用code獲取access_token的時候就報了"errcode":40163,"errmsg":"code been used...,發現我打的斷點執行了再遍,這他媽很尷尬,百思不得其姐。

 

解決辦法:

  網上百度了一大堆,問題呢就是微信回調兩次這個接口,然后傳過來的code只能用一次來獲取access_token,微信第二次回調進來的時候再用這個code去獲取access_token就報這個錯了。

  網上有些人說要用緩存(redis或session)把code當key,access_token當value存起來,第二次進來的時候看有沒有這個code,有就返回,來避免第二次使用code獲取access_token。

  我用redis試了半天,完全沒卵用。

  最后我把所有斷點取消,把此接口中的所有處理代碼注釋,寫了一個最簡單的打印代碼,TMD再調的時候只打印一遍就過去了,終於發現了問題所在,打上斷點控制台打印出來兩遍,這就想明白了,打了斷點可能是微信那邊得不到及時反饋又調了一遍過來。

  最后的最后,大大的fuck送上,把此接口斷點取消,代碼復原就登錄成功啦拿到微信用戶的數據啦

  pc微信掃碼登錄的小功能,隨后會另寫一篇筆記,此章只是記錄下這個坑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM