国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
返回說明
首頁 微信小程序 微信開發(fā) 微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

Feb 14, 2017 pm 01:21 PM

1、OAuth2.0

  OAuth(開放授權(quán))是一個(gè)開放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用。

  允許用戶提供一個(gè)令牌,而不是用戶名和密碼來訪問他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個(gè)令牌授權(quán)一個(gè)特定的網(wǎng)站(例如,視頻編輯網(wǎng)站)在特定的時(shí)段(例如,接下來的2小時(shí)內(nèi))內(nèi)訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth允許用戶授權(quán)第三方網(wǎng)站訪問他們存儲在另外的服務(wù)提供者上的信息,而不需要分享他們的訪問許可或他們數(shù)據(jù)的所有內(nèi)容。

2、目標(biāo)

  我們這里主要模擬使用OAuth2.0,用戶通過掃描我們網(wǎng)頁應(yīng)用的二維碼并進(jìn)行授權(quán)登錄來獲取用戶的基本信息的過程。詳細(xì)的接口相關(guān)信息可以在微信開放平臺上查看:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

3、前期準(zhǔn)備(獲取微信開發(fā)者權(quán)限)

  我們這里主要講的是網(wǎng)站(Web)應(yīng)用,網(wǎng)站應(yīng)用微信登錄是基于OAuth2.0協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信OAuth2.0授權(quán)登錄系統(tǒng)(即上面的協(xié)議)。在微信客戶端授權(quán)登錄(獲取用戶信息)的可以查看:http://www.cnblogs.com/0201zcr/p/5131602.html

  在進(jìn)行微信OAuth2.在進(jìn)行微信OAuth2.0授權(quán)登錄接入之前,在微信開放平臺注冊開發(fā)者帳號,并擁有一個(gè)已審核通過的網(wǎng)站應(yīng)用,并獲得相應(yīng)的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。

3.1、注冊開發(fā)者賬號

  可以在https://open.weixin.qq.com/?這里申請開發(fā)的賬號。由于是騰訊的網(wǎng)頁,這里可以直接通過?QQ號進(jìn)行登錄。

3.2、提交網(wǎng)站應(yīng)用審核

  在已經(jīng)登錄的界面中選擇“管理中心”——》網(wǎng)站應(yīng)用——》創(chuàng)建網(wǎng)站應(yīng)用

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

?  將會彈出下面的界面

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

  填寫過后,還有有一個(gè)頁面需要填寫,提交一份紙質(zhì)版申請書掃描件(會提供模板,我們下載再來填寫后,需蓋章,簽名),配置回調(diào)域名(掃碼登錄后會跳轉(zhuǎn)的頁面)等。

  之后提交審核即可,等微信審核通過,我們即可獲得我們需要的網(wǎng)頁應(yīng)用的appid和AppSecret,并配置后回調(diào)的域名了(這三樣是我們開發(fā)所必須的)。

3.3、開發(fā)者資質(zhì)認(rèn)證

  由于我們這里要使用微信登錄的接口,所以我們還需要向微信提出認(rèn)證,只有認(rèn)證了才能使用微信那些高級的接口。未認(rèn)證的如下圖所示

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

?  認(rèn)證之后是這樣子的:

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

?  ?我現(xiàn)在暫時(shí)沒有找到可以向公眾賬號那樣子的測試賬號的申請。如果有知道怎么可以申請到測試賬號的高手,希望能賜教一下。

  接下來,我們就可以開始我們的網(wǎng)頁微信掃碼登錄開發(fā)了。

4、授權(quán)流程說明

  微信OAuth2.0授權(quán)登錄讓微信用戶使用微信身份安全登錄第三方應(yīng)用或網(wǎng)站,在微信用戶授權(quán)登錄已接入微信OAuth2.0的第三方應(yīng)用后,第三方可以獲取到用戶的接口調(diào)用憑證(access_token),通過access_token可以進(jìn)行微信開放平臺授權(quán)關(guān)系接口調(diào)用,從而可實(shí)現(xiàn)獲取微信用戶基本開放信息和幫助用戶實(shí)現(xiàn)基礎(chǔ)開放功能等。

  微信OAuth2.0授權(quán)登錄目前支持authorization_code模式,適用于擁有server端的應(yīng)用授權(quán)。該模式整體流程為:


1.?第三方發(fā)起微信授權(quán)登錄請求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時(shí)票據(jù)code參數(shù);2.?通過code參數(shù)加上AppID和AppSecret等,通過API換取access_token;3.?通過access_token進(jìn)行接口調(diào)用,獲取用戶基本數(shù)據(jù)資源或幫助用戶實(shí)現(xiàn)基本操作。

?  獲取access_token時(shí)序圖:

?微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

5、獲取網(wǎng)頁的二維碼

  當(dāng)我們通過微信的認(rèn)證,獲取到了appid和AppSecret,并配置了回調(diào)的域名。我們就已經(jīng)可以獲取屬于我們網(wǎng)頁的二維碼了,獲取的方式很簡單,只需打開一個(gè)微信的鏈接,加上我們的appid和回調(diào)域名即可在網(wǎng)頁上面打開二維碼,用戶用微信客戶端掃碼并授權(quán)登錄之后即會跳轉(zhuǎn)到我們配置的回調(diào)域名下。

注意:


1、這里填寫的是域名(是一個(gè)字符串),而不是URL,因此請勿加http://等協(xié)議頭;2、授權(quán)回調(diào)域名配置規(guī)范為全域名,比如需要網(wǎng)頁授權(quán)的域名為:www.qq.com,配置以后此域名下面的頁面http://www.qq.com/music.html?、?http://m.miracleart.cn/?都可以進(jìn)行OAuth2.0鑒權(quán)。但http://pay.qq.com?、?http://m.miracleart.cn/?、?http://m.miracleart.cn/無法進(jìn)行OAuth2.0鑒權(quán)

5.1、請求url說明

  第三方使用網(wǎng)站應(yīng)用授權(quán)登錄前請注意已獲取相應(yīng)網(wǎng)頁授權(quán)作用域(scope=snsapi_login),則可以通過在PC端打開以下鏈接:

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

?

?參數(shù)說明

參數(shù) 是否必須 說明
appid 應(yīng)用唯一標(biāo)識(前面認(rèn)證網(wǎng)頁應(yīng)用中獲得)
redirect_uri 重定向地址,需要進(jìn)行UrlEncode(前面認(rèn)證網(wǎng)頁應(yīng)用中獲得)
response_type 填code
scope 應(yīng)用授權(quán)作用域,擁有多個(gè)作用域用逗號(,)分隔,網(wǎng)頁應(yīng)用目前僅填寫snsapi_login即可
state 用于保持請求和回調(diào)的狀態(tài),授權(quán)請求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數(shù),可設(shè)置為簡單的隨機(jī)數(shù)加session進(jìn)行校驗(yàn)

?返回說明

?  用戶允許授權(quán)后,將會重定向到redirect_uri的網(wǎng)址上,并且?guī)蟘ode和state參數(shù)


redirect_uri?code=CODE&state=STATE

?  若用戶禁止授權(quán),則重定向后不會帶上code參數(shù),僅會帶上state參數(shù)


redirect_uri?state=STATE

5.2、事例:

  一號店的微信二維碼鏈接如下:

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

?  將其復(fù)制到瀏覽器中打開即可獲得一號店的二維碼,二維碼頁面如下:

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

  通過使用微信客戶端的掃一掃功能,掃描該二維碼,即會跳轉(zhuǎn)到上面填寫redirect_uri所在的地址上。假如用戶同意授權(quán),這里就獲得了微信返回的code參數(shù)了。

6、獲取用戶信息

  假如前面已經(jīng)獲得code。我們可以通過code參數(shù)去獲取用戶openid和access_token,進(jìn)而獲得用戶的信息。

6.1、通過code參數(shù)獲取access_token


https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

?參數(shù)說明

參數(shù) 是否必須 說明
appid 應(yīng)用唯一標(biāo)識,在微信開放平臺提交應(yīng)用審核通過后獲得
secret 應(yīng)用密鑰AppSecret,在微信開放平臺提交應(yīng)用審核通過后獲得
code 填寫第一步獲取的code參數(shù)
grant_type 填authorization_code
返回說明

正確的返回:


{?
"access_token":"ACCESS_TOKEN",?
"expires_in":7200,?
"refresh_token":"REFRESH_TOKEN","openid":"OPENID",?
"scope":"SCOPE","unionid":?"o6_bmasdasdsad6_2sgVt7hMZOPfL"}

參數(shù) 說明
access_token 接口調(diào)用憑證
expires_in access_token接口調(diào)用憑證超時(shí)時(shí)間,單位(秒)
refresh_token 用戶刷新access_token
openid 授權(quán)用戶唯一標(biāo)識
scope 用戶授權(quán)的作用域,使用逗號(,)分隔
?unionid 當(dāng)且僅當(dāng)該網(wǎng)站應(yīng)用已獲得該用戶的userinfo授權(quán)時(shí),才會出現(xiàn)該字段。

錯(cuò)誤返回樣例:


{"errcode":40029,"errmsg":"invalid?code"}

注意:

  • code參數(shù)的超時(shí)時(shí)間是5分鐘,且每次請求的code參數(shù)的值都不一樣。

  • access_token的超時(shí)時(shí)間是32分鐘。

6.2、通過access_token獲取用戶的基本信息

獲取的前提條件

  • access_token有效且為超時(shí);

  • 微信用戶已授權(quán)給第三方應(yīng)用賬號相應(yīng)接口作用域(scope)【在二維碼生成連接那里填寫】

對于接口作用域(scope),能調(diào)用的接口有以下:

授權(quán)作用域(scope) 接口 接口說明
snsapi_base /sns/oauth2/access_token 通過code換取access_token、refresh_token和已授權(quán)scope
/sns/oauth2/refresh_token 刷新或續(xù)期access_token使用
/sns/auth 檢查access_token有效性
snsapi_userinfo /sns/userinfo 獲取用戶個(gè)人信息

?

  使用snsapi_base作用域的授權(quán)是掃碼之后無需用戶點(diǎn)擊授權(quán),掃碼后直接跳轉(zhuǎn),用戶感覺不到授權(quán)了,但這種授權(quán)方式能獲取的數(shù)據(jù)量有限,這里我們要獲取用戶的基本信息,我們需要使用snsapi_userinfo授權(quán)。使用snsapi_userinfo授權(quán),掃碼后出現(xiàn)類似于下面的授權(quán)界面

微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

  此接口用于獲取用戶個(gè)人信息。開發(fā)者可通過OpenID來獲取用戶基本信息。特別需要注意的是,如果開發(fā)者擁有多個(gè)移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性,因?yàn)橹灰峭粋€(gè)微信開放平臺帳號下的移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號,用戶的unionid是唯一的。換句話說,同一用戶,對同一個(gè)微信開放平臺下的不同應(yīng)用,unionid是相同的。請注意,在用戶修改微信頭像后,舊的微信頭像URL將會失效,因此開發(fā)者應(yīng)該自己在獲取用戶信息后,將頭像圖片保存下來,避免微信頭像URL失效后的異常情況。

  

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

?參數(shù)說明

參數(shù) 是否必須 說明
access_token 調(diào)用憑證(上一個(gè)請求中獲得)
openid 普通用戶的標(biāo)識,對當(dāng)前開發(fā)者帳號唯一(上一個(gè)請求中獲得)
? ? ? ?lang ? 否 國家地區(qū)語言版本,zh_CN 簡體,zh_TW 繁體,en 英語,默認(rèn)為zh-CN
返回說明

正確的Json返回結(jié)果:


{?
"openid":"OPENID","nickname":"NICKNAME","sex":1,"province":"PROVINCE","city":"CITY","country":"COUNTRY","headimgurl":?"http://m.miracleart.cn/","privilege":["PRIVILEGE1",?
"PRIVILEGE2"],"unionid":?"?o6_bmasdasdsad6_2sgVt7hMZOPfL"}

參數(shù) 說明
openid 普通用戶的標(biāo)識,對當(dāng)前開發(fā)者帳號唯一
nickname 普通用戶昵稱
sex 普通用戶性別,1為男性,2為女性
province 普通用戶個(gè)人資料填寫的省份
city 普通用戶個(gè)人資料填寫的城市
country 國家,如中國為CN
headimgurl 用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大?。ㄓ?、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空
privilege 用戶特權(quán)信息,json數(shù)組,如微信沃卡用戶為(chinaunicom)
unionid 用戶統(tǒng)一標(biāo)識。針對一個(gè)微信開放平臺帳號下的應(yīng)用,同一用戶的unionid是唯一的。

錯(cuò)誤的Json返回示例:


{?
"errcode":40003,"errmsg":"invalid?openid"}

7、總結(jié)?

  最近著手開發(fā)了微信網(wǎng)頁掃碼登錄和公眾號授權(quán)登錄收獲頗豐,兩者的開發(fā)很類似。以下是我個(gè)人摸索過程中發(fā)現(xiàn)的兩者的異同:

  • 兩者都可以通過微信客戶端掃碼授權(quán)的方式,讓第三方頁面獲得微信用戶的一些基本信息(昵稱、性別、所在地、在微信唯一標(biāo)示等……)。他們都是通過提供一個(gè)鏈接讓用戶授權(quán)的方式。但網(wǎng)頁版需要在頁面打開二維碼之后授權(quán),而公眾號則需要用戶先關(guān)注了我們的公眾號,然后點(diǎn)開公眾號里面的鏈接,確認(rèn)授權(quán)即可。

  • 網(wǎng)頁掃碼登錄需要將授權(quán)的鏈接(二維碼鏈接)在網(wǎng)頁中打開、而公眾號授權(quán)登錄的鏈接必須要微信客戶端中打開。

  • 無論網(wǎng)頁掃碼登錄還是在公眾號中授權(quán)登錄,都是通過授權(quán)的方式獲得一個(gè)code參數(shù),之后通過code參數(shù)獲取access_token和openid和通過access_token和openid去獲取用戶的基本信息的請求鏈接是一樣的。

  • 在開發(fā)公眾號授權(quán)登錄的過程中,我發(fā)現(xiàn)了有測試賬號的提供,足以滿足我們的測試和開發(fā),但在開發(fā)網(wǎng)頁掃碼時(shí),暫時(shí)未發(fā)現(xiàn)哪里能獲取測試賬號,我是通過申請獲取的。(希望知道哪里有測試賬號的請求高手賜教)。

?公眾賬號授權(quán)登錄:http://www.cnblogs.com/0201zcr/p/5131602.html

微信公眾號群發(fā)消息:http://www.cnblogs.com/0201zcr/p/5866296.html

更多微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)?相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)