一、需要了解的整個過程
微信授權登錄的整個過程:
1. 第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code參數;
2. 通過code參數加上AppID和AppSecret等,通過API換取access_token;
3. 通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

二、具體步驟
1.用戶授權並獲取code
https://open.weixin.qq.com/connect/qrconnect?appid=
APPID
&redirect_uri=
REDIRECT_URI
&response_type=code&scope=
SCOPE
&state=
STATE
#wechat_redirect
-
APPID就是填寫你公眾號的appid
-
REDIRECT_URI是填寫通過urlEncode處理的授權地址,不能直接填寫。(處理網站: http://tool.oschina.net/encode?type=4,在這里有一個要注意的就是,在填寫網關時,要去掉http://,不然就會出現 redirect_uri的域名與審核時填寫的授權域名不一致)
-
SCOPE一般填寫snsapi_userinfo比較好,能夠直接通過用戶授權獲取用戶信息(snsapi_login是坑, snsapi_base只能獲取openid)
請求地址參數說明
參數
|
是否必須
|
說明
|
appid
|
是
|
應用唯一標識
|
redirect_uri
|
是
|
請使用urlEncode對鏈接進行處理
|
response_type
|
是
|
填code
|
scope
|
是
|
應用授權作用域,擁有多個作用域用逗號(,)分隔,網頁應用目前僅填寫snsapi_login即
|
state
|
否
|
用於保持請求和回調的狀態,授權請求后原樣帶回給第三方。該參數可用於防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數,可設置為簡單的隨機數加session進行校驗
|
2.通過code獲取assess_token和openid
通過code獲取access_token和openid(有這兩個就能獲取用戶基本信息,如昵稱、頭像)
其實就是將獲取到的code填進去,appid和secret是填寫你公眾號的appid和secret就行。
請求地址參數說明
參數
|
是否必須
|
說明
|
appid
|
是
|
應用唯一標識,在微信開放平台提交應用審核通過后獲得
|
secret
|
是
|
應用密鑰AppSecret,在微信開放平台提交應用審核通過后獲得
|
code
|
是
|
填寫第一步獲取的code參數
|
grant_type
|
是
|
填authorization_code
|
返回說明
正確的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
參數說明
參數
|
說明
|
access_token
|
接口調用憑證
|
expires_in
|
access_token接口調用憑證超時時間,單位(秒)
|
refresh_token
|
用戶刷新access_token
|
openid
|
授權用戶唯一標識
|
scope
|
用戶授權的作用域,使用逗號(,)分隔
|
unionid
|
當且僅當該網站應用已獲得該用戶的userinfo授權時,才會出現該字段。
|
三、獲取用戶基本信息
填上獲取到的token和openid,獲取用戶信息。
四、一些總結
1.域名問題
我是使用了ngrok進行測試的,做微信公眾,域名是必須的,這里ngrok反向代理可以暫時解決。(ngrok 是一個反向代理,通過在公共的端點和本地運行的 Web 服務器之間建立一個安全的通道。)
由於這個東西不是很了解,所以就不多敘述了(通過ngrok建立通向本地8080端口的通道,能夠獲取到一個隨機的域名)

2.微信公眾號底部菜單欄
在做這個微信授權有一個困擾我的地方,剛開始我是通過拼接url去測試的(個人覺得巨麻煩)。后來我就使用了微信公眾號底部菜單欄。這里就說一下自定義菜單欄吧。。。。。
點開官方地址
拖到最底會看到一個鏈接(使用網頁調試工具調試該接口)


通過這里就能自定義菜單了。。。。。
后記:
概念:snsapi_base與snsapi_userinfo屬於微信網頁授權獲取用戶信息的兩種作用域。 區別:有無彈框 以snsapi_base為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的. (靜默的另一種:對於已關注公眾號的用戶,如果用戶從公眾號的會話或者自定義菜單進入本公眾號的網頁授權頁,即使是scope為snsapi_userinfo,也是靜默授權,用戶無感知。) 以snsapi_userinfo為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。 --------------------- 本文來自 enjoy_sun_moon 的CSDN 博客 ,全文地址請點擊:
https://blog.csdn.net/enjoy_sun_moon/article/details/79497566?utm_source=copy