亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

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

Feb 14, 2017 pm 01:21 PM

1、OAuth2.0

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

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

2、目標

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

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

  我們這裡主要講的是網(wǎng)站(Web)應(yīng)用,網(wǎng)站應(yīng)用微信登入是基於OAuth2.0協(xié)定標準建構(gòu)的微信OAuth2.0授權(quán)登入系統(tǒng)(即上面的協(xié)定)。在微信用戶端授權(quán)登入(取得使用者資訊)的可以查看:http://www.cnblogs.com/0201zcr/p/5131602.html

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

3.1、註冊開發(fā)者帳號

  可以在https://open.weixin.qq.com/?這裡申請開發(fā)的帳號。由於是騰訊的網(wǎng)頁,這裡可以直接透過?QQ號進行登入。

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

  在已經(jīng)登入的介面中選擇「管理中心」—》網(wǎng)站應(yīng)用程式—》建立網(wǎng)站應(yīng)用程式

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

???都會彈出後將彈出後填入下面的介面所彈出後的介面。 ,還有一個頁面需要填寫,提交一份紙本申請書掃描件(會提供模板,我們下載再來填寫後,需蓋章,簽名),配置回調(diào)域名(掃碼登錄後會跳轉(zhuǎn)的頁面)等。

  之後提交審核即可,等微信審核通過,我們即可獲得我們需要的網(wǎng)頁應(yīng)用的appid和AppSecret,並配置後回調(diào)的域名了(這三樣是我們開發(fā)所必須的)。 微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

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

  由於我們這裡要使用微信登錄的接口,所以我們還需要向微信提出認證,只有認證了才能使用微信那些高級的接口。未經(jīng)認證的如下圖

?  認證之後是這樣子的:

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

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

  接下來,我們就可以開始我們的網(wǎng)頁微信掃碼登入開發(fā)了。 微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)

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

  微信OAuth2.0授權(quán)登入讓微信使用者使用微信身分安全登入第三方應(yīng)用程式或網(wǎng)站,在微信使用者授權(quán)登入已接取微信OAuth2.0的第三方應(yīng)用程式後,第三方可以取得到使用者的介面調(diào)用憑證(access_token),透過access_token可以進行微信開放平臺授權(quán)關(guān)係介面調(diào)用,從而實現(xiàn)獲取微信用戶基本開放資訊和幫助用戶實現(xiàn)基礎(chǔ)開放功能等。

  微信OAuth2.0授權(quán)登入目前支援a(chǎn)uthorization_code模式,適用於擁有server端的應(yīng)用程式授權(quán)。此模式整體流程為:

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


?  取得access_token時序圖:

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

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

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

注意:


1、這里填寫的是域名(是一個字符串),而不是URL,因此請勿加http://等協(xié)議頭;2、授權(quán)回調(diào)域名配置規(guī)范為全域名,比如需要網(wǎng)頁授權(quán)的域名為:www.qq.com,配置以后此域名下面的頁面http://www.qq.com/music.html?、?http://ipnx.cn/?都可以進行OAuth2.0鑒權(quán)。但http://pay.qq.com?、?http://ipnx.cn/?、?http://ipnx.cn/無法進行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)用唯一標識(前面認證網(wǎng)頁應(yīng)用中獲得)
redirect_uri 重定向地址,需要進行UrlEncode(前面認證網(wǎng)頁應(yīng)用中獲得)
response_type 填code
scope 應(yīng)用授權(quán)作用域,擁有多個作用域用逗號(,)分隔,網(wǎng)頁應(yīng)用目前僅填寫snsapi_login即可
state 用于保持請求和回調(diào)的狀態(tài),授權(quán)請求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數(shù),可設(shè)置為簡單的隨機數(shù)加session進行校驗

?返回說明

?  用戶允許授權(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,進而獲得用戶的信息。

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)用唯一標識,在微信開放平臺提交應(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)用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 授權(quán)用戶唯一標識
scope 用戶授權(quán)的作用域,使用逗號(,)分隔
?unionid 當(dāng)且僅當(dāng)該網(wǎng)站應(yīng)用已獲得該用戶的userinfo授權(quán)時,才會出現(xiàn)該字段。

錯誤返回樣例:


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

注意:

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

  • access_token的超時時間是32分鐘。

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

獲取的前提條件

  • access_token有效且為超時;

  • 微信用戶已授權(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 獲取用戶個人信息

?

  使用snsapi_base作用域的授權(quá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)

  此接口用于獲取用戶個人信息。開發(fā)者可通過OpenID來獲取用戶基本信息。特別需要注意的是,如果開發(fā)者擁有多個移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號,用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應(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)用憑證(上一個請求中獲得)
openid 普通用戶的標識,對當(dāng)前開發(fā)者帳號唯一(上一個請求中獲得)
? ? ? ?lang ? 否 國家地區(qū)語言版本,zh_CN 簡體,zh_TW 繁體,en 英語,默認為zh-CN
返回說明

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


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

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

錯誤的Json返回示例:


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

7、總結(jié)?

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

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

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

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

  • 在開發(fā)公眾號授權(quán)登錄的過程中,我發(fā)現(xiàn)了有測試賬號的提供,足以滿足我們的測試和開發(fā),但在開發(fā)網(wǎng)頁掃碼時,暫時未發(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)!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72