一、什么是OAuth2.0
OAuth是一個開放協(xié)議,允許用戶讓第三方應用以安全且標準的方式獲取該用戶在某一網(wǎng)站、移動或桌面應用上存儲的私密的資源(如用戶個人信息、照片、視頻、聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應用。
OAuth 2.0是OAuth協(xié)議的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0關注客戶端開發(fā)者的簡易性,同時為Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。
OAuth允許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數(shù)據(jù)。每一個令牌授權一個特定的網(wǎng)站(例如,視頻編輯網(wǎng)站)在特定的時段(例如,接下來的2小時內)內訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth允許用戶授權第三方網(wǎng)站訪問他們存儲在另外的服務提供者上的信息,而不需要分享他們的訪問許可或他們數(shù)據(jù)的所有內容。
新浪微博API目前也使用OAuth 2.0。
二、微信公眾平臺OAuth2.0授權
微信公眾平臺OAuth2.0授權詳細步驟如下:
1. 用戶關注微信公眾賬號。
2. 微信公眾賬號提供用戶請求授權頁面URL。
3. 用戶點擊授權頁面URL,將向服務器發(fā)起請求
4. 服務器詢問用戶是否同意授權給微信公眾賬號(scope為snsapi_base時無此步驟)
5. 用戶同意(scope為snsapi_base時無此步驟)
6. 服務器將CODE通過回調傳給微信公眾賬號
7. 微信公眾賬號獲得CODE
8. 微信公眾賬號通過CODE向服務器請求Access Token
9. 服務器返回Access Token和OpenID給微信公眾賬號
10. 微信公眾賬號通過Access Token向服務器請求用戶信息(scope為snsapi_base時無此步驟)
11. 服務器將用戶信息回送給微信公眾賬號(scope為snsapi_base時無此步驟)
?
<?php/*
第三方接口 測試代碼*/$post = "<xml><ToUserName><![CDATA[gh_204936aea56d]]></ToUserName>
<FromUserName><![CDATA[oc7tbuPEJdWm7jLJqRPCDNoWq480]]></FromUserName>
<CreateTime>1383811836</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[深圳天氣]]></Content>
<MsgId>5943426579437733541</MsgId>
</xml>";$url = "http://www.abc.com/weixin/";$headers = array("Content-Type: text/xml; charset=utf-8");$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);$output = curl_exec($ch);
curl_close($ch);echo $output;?>