js微信--微信授權登錄(OAuth2.0)


最近因為疫情,工作延期中,不想每天浪費時間,正好趁休息,整理一下工作中用的一下東西。

年前有個項目需要在微信中授權獲取用戶基本信息

 

微信授權使用的是OAuth2.0授權的方式。主要有以下步驟

  第一步:用戶同意授權,獲取code

  第二步:通過code換取網頁授權access_token

  第三步:刷新access_token(如果需要)

  第四步:拉取用戶信息(需scope為 snsapi_userinfo)

 

請求授權頁面的構造方式

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

 參數說明

參數

必須

說明

appid

公眾號的唯一標識(這個就是我們申請的)

redirect_uri

授權后重定向的回調鏈接地址(我們前面申請的)

response_type

返回類型,請填寫code

scope

應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地。並且,即使在未關注的情況下,只要用戶授權,也能獲取其信息)

state

重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節,該值會被微信原樣返回,我們可以將其進行比對,防止別人的攻擊。

#wechat_redirect

直接在微信打開鏈接,可以不填此參數。做頁面302重定向時候,必須帶此參數

 

 

應用授權作用域:由於snsapi_base只能獲取到openid,意義不大,所以我們使用snsapi_userinfo。

尤其注意:由於授權操作安全等級較高,所以在發起授權請求時,微信會對授權鏈接做正則強匹配校驗,如果鏈接的參數順序不對,授權頁面將無法正常訪問

這個需要發到微信中,使用微信瀏覽器才能打開。

 code說明 :

code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code只能使用一次,5分鍾未被使用自動過期
使用code換取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

 

參數說明

參數

是否必須

說明

appid

公眾號的唯一標識

secret

公眾號的appsecret

code

填寫第一步獲取的code參數

grant_type

填寫為authorization_code

只有獲取code的鏈接必須是在微信客戶端中點開的,獲取access_token和用戶信息可以直接在網頁打開即可。

通過access_token、openid獲取用戶信息 :

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

 

得到的json格式數據如下:

{

   "openid":" OPENID",

   " nickname": NICKNAME,

   "sex":"1",

   "province":"PROVINCE"

   "city":"CITY",

   "country":"COUNTRY",

    "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", 

"privilege":[

"PRIVILEGE1"

"PRIVILEGE2"

    ],

    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

注意:用戶(即openid)關注了公眾號后,才能調用成功

 
摘:https://www.cnblogs.com/sunshq/p/5132811.html


免責聲明!

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



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