一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

微信公眾平臺(tái)開發(fā)(71)OAuth2.0網(wǎng)頁授權(quán)

 張?chǎng)?8 2015-12-30

微信公眾平臺(tái)開發(fā) OAuth2.0網(wǎng)頁授權(quán)認(rèn)證 網(wǎng)頁授權(quán)獲取用戶基本信息 
作者:方倍工作室  

微信公眾平臺(tái)最近新推出微信認(rèn)證,認(rèn)證后可以獲得高級(jí)接口權(quán)限,其中一個(gè)是OAuth2.0網(wǎng)頁授權(quán),很多朋友在使用這個(gè)的時(shí)候失敗了或者無法理解其內(nèi)容,希望我出個(gè)教程詳細(xì)講解一下,于是便有了這篇文章。

 

一、什么是OAuth2.0

官方網(wǎng)站:http:///   http:///2/

權(quán)威定義:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. 

OAuth是一個(gè)開放協(xié)議,允許用戶讓第三方應(yīng)用以安全且標(biāo)準(zhǔn)的方式獲取該用戶在某一網(wǎng)站、移動(dòng)或桌面應(yīng)用上存儲(chǔ)的私密的資源(如用戶個(gè)人信息、照片、視頻、聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用。

OAuth 2.0是OAuth協(xié)議的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0關(guān)注客戶端開發(fā)者的簡(jiǎn)易性,同時(shí)為Web應(yīng)用,桌面應(yīng)用和手機(jī),和起居室設(shè)備提供專門的認(rèn)證流程。

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

新浪微博API目前也使用OAuth 2.0。

原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

二、微信公眾平臺(tái)OAuth2.0授權(quán)

微信公眾平臺(tái)OAuth2.0授權(quán)詳細(xì)步驟如下:

1. 用戶關(guān)注微信公眾賬號(hào)。
2. 微信公眾賬號(hào)提供用戶請(qǐng)求授權(quán)頁面URL。
3. 用戶點(diǎn)擊授權(quán)頁面URL,將向服務(wù)器發(fā)起請(qǐng)求
4. 服務(wù)器詢問用戶是否同意授權(quán)給微信公眾賬號(hào)(scope為snsapi_base時(shí)無此步驟)
5. 用戶同意(scope為snsapi_base時(shí)無此步驟)
6. 服務(wù)器將CODE通過回調(diào)傳給微信公眾賬號(hào)
7. 微信公眾賬號(hào)獲得CODE
8. 微信公眾賬號(hào)通過CODE向服務(wù)器請(qǐng)求Access Token
9. 服務(wù)器返回Access Token和OpenID給微信公眾賬號(hào)
10. 微信公眾賬號(hào)通過Access Token向服務(wù)器請(qǐng)求用戶信息(scope為snsapi_base時(shí)無此步驟)
11. 服務(wù)器將用戶信息回送給微信公眾賬號(hào)(scope為snsapi_base時(shí)無此步驟)

 

 

使用的AppId和AppSecret在開發(fā)者中心-開發(fā)者ID中,可以找到。

 

 

1. 配置授權(quán)回調(diào)頁面域名

進(jìn)入微信公眾平臺(tái)后臺(tái)后,依次進(jìn)入開發(fā)者中心-權(quán)限表,找到網(wǎng)頁授權(quán)獲取用戶基本信息,

 

 

點(diǎn)擊右側(cè)的修改。原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

授權(quán)回調(diào)域名配置規(guī)范為全域名并且不帶http,比如需要網(wǎng)頁授權(quán)的域名為:www.qq.com,配置以后此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以進(jìn)行OAuth2.0鑒權(quán)。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無法進(jìn)行OAuth2.0鑒權(quán)。

這里我們填寫方倍工作室的一個(gè)百度應(yīng)用二級(jí)域名為 mascot.

原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

如果你的網(wǎng)址沒有被列入過黑名單,就會(huì)在頂部出現(xiàn)

然后,域名配置就成功了。

 

2. 用戶授權(quán)并獲取code

在域名根目錄下,新建一個(gè)文件,命名為oauth2.php,其內(nèi)容為

復(fù)制代碼
<?php
if (isset($_GET['code'])){
    echo $_GET['code'];
}else{
    echo "NO CODE";
}
?>
復(fù)制代碼

先了解下請(qǐng)求授權(quán)頁面的構(gòu)造方式:

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

參數(shù)說明

參數(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)頁面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息
state 重定向后會(huì)帶上state參數(shù),開發(fā)者可以填寫任意參數(shù)值
#wechat_redirect 直接在微信打開鏈接,可以不填此參數(shù)。做頁面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=wx8888888888888888&redirect_uri=http://mascot./oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

把這個(gè)鏈接發(fā)送到微信中,以便在微信瀏覽器中打開,這里使用A鏈接封裝如下:

OAuth2.0網(wǎng)頁授權(quán)演示 
<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot./oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">點(diǎn)擊這里體驗(yàn)</a>
技術(shù)支持 方倍工作室

在微信中顯示如下

點(diǎn)擊綁定后,彈出應(yīng)用授權(quán)界面

選擇允許,點(diǎn)擊

跳轉(zhuǎn)到auth2.php頁面,執(zhí)行

echo $_GET['code']

界面上顯示的就是code,這時(shí)候通過右上角按鈕中的復(fù)制鏈接,得到鏈接如下:

http://mascot./oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1

我們成功得到了code了。

復(fù)制代碼
注意:如果在綁定的時(shí)候出現(xiàn)這樣的界面,就說明參數(shù)不對(duì),需要回頭檢查一下參數(shù)
復(fù)制代碼

 

3. 使用code換取access_token

換取網(wǎng)頁授權(quán)access_token頁面的構(gòu)造方式:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_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=wx8888888888888888&secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&code=00b788e3b42043c8459a57a8d8ab5d9f&grant_type=authorization_code

可以在瀏覽器中直接執(zhí)行這條語句:

得到如下json數(shù)據(jù):

復(fù)制代碼
{
    "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,"
}
復(fù)制代碼

數(shù)據(jù)格式解讀如下:

參數(shù)描述
access_token 網(wǎng)頁授權(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)頁,也會(huì)產(chǎn)生一個(gè)用戶和公眾號(hào)唯一的OpenID
scope 用戶授權(quán)的作用域,使用逗號(hào)(,)分隔

于是,我們成功的通過code換取到了access_token,以及refresh_token。

復(fù)制代碼
刷新access_token
官方文檔中提到了刷新access_token的功能,但這不是必須要做的,初次使用可以先忽略。

url請(qǐng)求方法如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_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=wx8888888888888888&grant_type=refresh_token&refresh_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A
在瀏覽器中執(zhí)行得到前面同樣格式的json數(shù)據(jù)
復(fù)制代碼

 

4. 使用access_token獲取用戶信息

請(qǐng)求方法:

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

參數(shù)說明

參數(shù)描述
access_token 網(wǎng)頁授權(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--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw&openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc

可以在瀏覽器中直接執(zhí)行這條語句:

得到如下json數(shù)據(jù):

復(fù)制代碼
{
    "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
    "nickname": "刺猬寶寶",
    "sex": 1,
    "language": "簡(jiǎn)體中文",
    "city": "深圳",
    "province": "廣東",
    "country": "中國(guó)",
    "headimgurl": "http://wx./mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0",
    "privilege": []
}
復(fù)制代碼

參數(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)注下列微信公眾賬號(hào)“方倍工作室”的二維碼,回復(fù)“授權(quán)”。

彈出獲取到的結(jié)果

 

四、內(nèi)容更新及源碼下載

本節(jié)最新的教程說明及源代碼已在《微信公眾平臺(tái)開發(fā)最佳實(shí)踐》一書中發(fā)布,歡迎購(gòu)買。


 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    中文字幕人妻日本一区二区 | 日韩一区二区三区四区乱码视频| 狠狠干狠狠操亚洲综合| 国产一区国产二区在线视频| 91久久精品国产一区蜜臀| 久久精品亚洲精品国产欧美| 国产成人精品99在线观看| 国产日韩在线一二三区| 91欧美激情在线视频| 字幕日本欧美一区二区| 果冻传媒精选麻豆白晶晶| 精品一区二区三区不卡少妇av| 暴力性生活在线免费视频| 国语久精品在视频在线观看| 草草视频福利在线观看| 大香伊蕉欧美一区二区三区| 久久国产亚洲精品成人| 日韩一区中文免费视频| 麻豆视传媒短视频免费观看| 天堂网中文字幕在线观看| 国产又粗又猛又爽色噜噜| 欧美一本在线免费观看| 日韩在线免费看中文字幕| 国产又粗又猛又长又大| 欧美日韩综合综合久久久| 久久精品国产99精品亚洲| 国产成人精品国产亚洲欧洲| 中文字幕一区二区三区大片| 天堂网中文字幕在线观看| 五月婷日韩中文字幕四虎| 国产又粗又长又大的视频| 有坂深雪中文字幕亚洲中文| 亚洲天堂男人在线观看| 福利在线午夜绝顶三级| 欧美精品中文字幕亚洲| 久久99夜色精品噜噜亚洲av| 香蕉尹人视频在线精品| 日韩在线欧美一区二区| 伊人欧美一区二区三区| 国产成人免费激情视频| 丁香六月啪啪激情综合区|