微信網頁受權snsapi_base、snsapi_userinfo的問題

  微信網頁受權SCOPE分爲snsapi_base、snsapi_userinfo,前者是用戶無感知的靜默受權只能拿到openid;然後者須要用戶確認,能拿到更多的用戶信息。 數據庫

我有一個系統須要進行網頁受權,拿到用戶信息。api

方案1:微信

        只使用snsapi_useinfo受權,並把用戶信息保存到數據庫,30天后就從新用進行snsapi_userinfo受權cookie

        弊端:實踐發現不少用戶換了頭像,換了暱稱,致使用戶頭像裂了,暱稱對不上。增長受權頻率又以爲用戶體驗不太好。。。測試

方案2:spa

        用戶進 行一次snsapi_userinfo受權,保存openid、refresh_token到數據庫。之後使用snsapi_api受權拿到 openid,而後根據openid用從數據庫取出refresh_token,經過refresh_token獲取access_token ,再經過access_token獲取到用戶信息。token

        弊端:實踐發現根本行不通,refresh_token拿access_token的時候就提示refresh_token已通過期了。。。文檔

        我更傾向於方案2,因而就在找refresh_token過去的緣由,後來發現snsapi_base受權也能返回access_token、refresh_token。正是因爲snsapi_base受權致使了我經過snsapi_userinfo受權保存的refresh_token失效!那經過它可否拿到用戶信息呢?通過實踐發現snsapi_base獲得的access_token也能拿到用戶信息!! cookies

        那這樣就與官方文檔衝突了。。。由於官網文檔說snsapi_base受權只能拿到openid的。並且我實踐也發現,有時snsapi_base受權獲得的access_token是拿不到用戶信息的用戶體驗

        那麼有這種可能,那就是若是用戶以前進行了snsapi_userinfo受權,那麼在必定時間內進行snsapi_base受權拿到的access_token是能夠拿到用戶信息的,這個時間就很差測試了。

        我想請教下了解微信網頁受權的同窗,是否是如我猜測的這樣?若是是,那麼進行snsapi_userinfo受權後屢次時間進行snsapi_base受權能夠拿到用戶信息。請對這方面瞭解的同窗不吝賜教~~

---------------問題補充---------------

把openid保存到cookies能夠避免使用snsapi_base受權去拿openid致使snsapi_useinfo受權獲得的refresh_token失效,可是沒法保證openid的準確性。極端狀況下考慮有人有多個微信號。。。

相關文章
相關標籤/搜索