分享一下我的個人微信小程序
{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}
問題:微信網頁授權后,獲取到 openid 了,一刷新又沒了
微信網頁授權獲取到的 code 只能使用一次(5分鍾內有效),使用一次后,馬上失效。
頁面授權跳轉成功,根據 code 也換取到 openid 了。
此時刷新頁面,並不會再次進行授權,而是直接刷新了一下上一次授權跳轉后的鏈接,帶的還是上一次的 code (如果你復制當前頁面的鏈接,會發現它就是請求授權的鏈接,然而,刷新的時候,它訪問的並不是這個請求授權鏈接)。
因為上一次的 code 已經使用過,再根據這個 code 換區 openid,就會返回:{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}
解決方式有很多種:
方式一:獲取 openid 的時候,判斷一下,如果為空,則重定向去授權,這樣的話,不管怎么刷新,都沒關系,一定能獲取到 openid (這種方式太簡單粗暴,雖然這個接口沒有調用次數限制,但每次都授權,總感覺壓力有點大)
方式二:將 openid 放到 session 里,如果 session 里取不到,再進行授權(微信里的 session 不知道退出登錄會不會斷開,已知關閉程序時會斷。如果換個微信登錄,session 沒斷,就不好了。只有一個微信號,沒測試過!)
方式三:將 openid 放 cookie 里,一次授權,終生可用,看你 cookie 設置的有效期是多久了(不知道換個微信號登陸,cookie 里取出的是不是還是這個,是的話,也不好了。)

