參數(shù) | 必須 | 說明 |
---|---|---|
appid | 是 | 公眾號(hào)的唯一標(biāo)識(shí) |
redirect_uri | 是 | 授權(quán)后重定向的回調(diào)鏈接地址 |
response_type | 是 | 返回類型,請(qǐng)?zhí)顚慶ode |
scope | 是 | 應(yīng)用授權(quán)作用域,snsapi_base (不彈出授權(quán)頁(yè)面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁(yè)面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息) |
state | 否 | 重定向后會(huì)帶上state參數(shù),開發(fā)者可以填寫任意參數(shù)值 |
#wechat_redirect | 否 | 直接在微信打開鏈接,可以不填此參數(shù)。做頁(yè)面302重定向時(shí)候,必須帶此參數(shù) |
應(yīng)用授權(quán)作用域:由于snsapi_base只能獲取到openid,意義不大,所以我們使用snsapi_userinfo。
回調(diào)地址:填寫為剛才上傳后的oauth2.php的文件地址,
state參數(shù):隨便一個(gè)數(shù)字,這里填1
構(gòu)造請(qǐng)求url如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888redirect_uri=http://mascot.duapp.com/oauth2.phpresponse_type=codescope=snsapi_userinfostate=1#wechat_redirect
把這個(gè)鏈接發(fā)送到微信中,以便在微信瀏覽器中打開,這里使用A鏈接封裝如下:
歡迎關(guān)注【近寶】,它能讓你更加方便尋找在你附近合你心意的餐飲、服裝、百貨、美容美發(fā)店鋪。
a >點(diǎn)擊這里綁定/a>
技術(shù)支持 方倍工作室
在微信中顯示如下
點(diǎn)擊綁定后,彈出應(yīng)用授權(quán)界面
選擇允許,點(diǎn)擊
跳轉(zhuǎn)到auth2.php頁(yè)面,執(zhí)行
echo $_GET[‘code‘]
界面上顯示的就是code,這時(shí)候通過右上角按鈕中的復(fù)制鏈接,得到鏈接如下:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9fstate=1
我們成功得到了code了。
注意:如果在綁定的時(shí)候出現(xiàn)這樣的界面,就說明參數(shù)不對(duì),需要回頭檢查一下參數(shù)
3. 使用code換取access_token
換取網(wǎng)頁(yè)授權(quán)access_token頁(yè)面的構(gòu)造方式:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPIDsecret=SECRETcode=CODEgrant_type=authorization_code
參數(shù)說明
參數(shù) | 是否必須 | 說明 |
---|---|---|
appid | 是 | 公眾號(hào)的唯一標(biāo)識(shí) |
secret | 是 | 公眾號(hào)的appsecret |
code | 是 | 填寫第一步獲取的code參數(shù) |
grant_type | 是 | 填寫為authorization_code |
code:在這里填寫為上一步獲得的值
構(gòu)造請(qǐng)求url如下:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888888secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacode=00b788e3b42043c8459a57a8d8ab5d9fgrant_type=authorization_code
可以在瀏覽器中直接執(zhí)行這條語(yǔ)句:
(
這里是關(guān)鍵,就是通過上面的url獲取json數(shù)據(jù)的代碼
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 要求結(jié)果為字符串且輸出到屏幕上 curl_setopt($ch, CURLOPT_HEADER, 0); // 不要http header 加快效率 curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)‘); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請(qǐng)求 不驗(yàn)證證書和hosts curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $output = curl_exec($ch); curl_close($ch); $jsondecode = json_decode($output); //對(duì)JSON格式的字符串進(jìn)行編碼 $array = get_object_vars($jsondecode);//轉(zhuǎn)換成數(shù)組 //紅色兩行是重點(diǎn),針對(duì)https的,讓我糾結(jié)了一天多 echo $array;
)
得到如下json數(shù)據(jù):
{ "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw", "expires_in": 7200, "refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A", "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "scope": "snsapi_userinfo," }
數(shù)據(jù)格式解讀如下:
參數(shù) | 描述 |
---|---|
access_token | 網(wǎng)頁(yè)授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持的access_token不同 |
expires_in | access_token接口調(diào)用憑證超時(shí)時(shí)間,單位(秒) |
refresh_token | 用戶刷新access_token |
openid | 用戶唯一標(biāo)識(shí),請(qǐng)注意,在未關(guān)注公眾號(hào)時(shí),用戶訪問公眾號(hào)的網(wǎng)頁(yè),也會(huì)產(chǎn)生一個(gè)用戶和公眾號(hào)唯一的OpenID |
scope | 用戶授權(quán)的作用域,使用逗號(hào)(,)分隔 |
于是,我們成功的通過code換取到了access_token,以及refresh_token。
刷新access_token
官方文檔中提到了刷新access_token的功能,但這不是必須要做的,初次使用可以先忽略。
url請(qǐng)求方法如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPIDgrant_type=refresh_tokenrefresh_token=REFRESH_TOKEN
參數(shù)說明
參數(shù) | 是否必須 | 說明 |
---|---|---|
appid | 是 | 公眾號(hào)的唯一標(biāo)識(shí) |
grant_type | 是 | 填寫為refresh_token |
refresh_token | 是 | 填寫通過access_token獲取到的refresh_token參數(shù) |
構(gòu)造如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx8888888888888888grant_type=refresh_tokenrefresh_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A
在瀏覽器中執(zhí)行得到前面同樣格式的json數(shù)據(jù)
4. 使用access_token獲取用戶信息
請(qǐng)求方法:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKENopenid=OPENID
參數(shù)說明
參數(shù) | 描述 |
---|---|
access_token | 網(wǎng)頁(yè)授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持的access_token不同 |
openid | 用戶的唯一標(biāo)識(shí) |
構(gòu)造url如下:
https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vwopenid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc
可以在瀏覽器中直接執(zhí)行這條語(yǔ)句:
得到如下json數(shù)據(jù):
{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "nickname": "方倍", "sex": 1, "language": "zh_CN", "city": "Shenzhen", "province": "Guangdong", "country": "CN", "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0", "privilege": [] }
參數(shù)解讀:
參數(shù) | 描述 |
---|---|
openid | 用戶的唯一標(biāo)識(shí) |
nickname | 用戶昵稱 |
sex | 用戶的性別,值為1時(shí)是男性,值為2時(shí)是女性,值為0時(shí)是未知 |
province | 用戶個(gè)人資料填寫的省份 |
city | 普通用戶個(gè)人資料填寫的城市 |
country | 國(guó)家,如中國(guó)為CN |
headimgurl | 用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大小(有0、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空 |
privilege | 用戶特權(quán)信息,json 數(shù)組,如微信沃卡用戶為(chinaunicom) |
這與我個(gè)人的微信信息是一致的
至此,在不輸入我的賬號(hào)及密碼的情況下,微信公眾賬號(hào)近寶獲得了我的個(gè)人信息,這些信息包括昵稱、性別、國(guó)家、省份、城市、個(gè)人頭像以及特權(quán)列表。
一個(gè)完整的OAuth2認(rèn)證就完成了。
三、詳細(xì)演示
關(guān)注方倍工作室(二維碼見下圖),回復(fù)“授權(quán)”,返回圖文消息,點(diǎn)擊圖片
在確認(rèn)頁(yè)面,點(diǎn)擊“允許”
彈出獲取到的結(jié)果(圖片做了防盜處理,所以不能直接顯示出來,可以下載到本地再來顯示)
以上就是關(guān)于微信開發(fā),網(wǎng)頁(yè)授權(quán)獲取用戶信息的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
標(biāo)簽:海南 唐山 鶴崗 汕頭 佛山 揭陽(yáng) 撫州 攀枝花
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《微信開發(fā) 網(wǎng)頁(yè)授權(quán)獲取用戶基本信息》,本文關(guān)鍵詞 微信,開發(fā),網(wǎng)頁(yè),授權(quán),獲取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。