PHP擴(kuò)展之Web服務(wù)(一)——OAuth
此擴(kuò)展提供 OAuth 消費(fèi)方和提供方之間的綁定。OAuth 是一種建立在 HTTP 之上的授權(quán)協(xié)議,用于允許應(yīng)用程序安全訪問數(shù)據(jù)而無需存儲用戶名和密碼。
PECL/oauth 需要 PHP 5.1 或更高版本,以及 ext/hash 和 ext/pcre 。
如果在構(gòu)建時選擇 PECL/oauth 則可選擇性地需要 libcurl 。如果使用 libcurl 配置,則必須構(gòu)建 HTTPS 支持。
安裝此 PECL 擴(kuò)展相關(guān)的信息可在手冊中標(biāo)題為?PECL 擴(kuò)展的安裝章節(jié)中找到。
二、使用范例<?php$req_url?=?’https://fireeagle.yahooapis.com/oauth/request_token’;$authurl?=?’https://fireeagle.yahoo.net/oauth/authorize’;$acc_url?=?’https://fireeagle.yahooapis.com/oauth/access_token’;$api_url?=?’https://fireeagle.yahooapis.com/api/0.1’;$conskey?=?’your_consumer_key’;$conssec?=?’your_consumer_secret’;session_start();//??當(dāng)?state=1?則下次請求應(yīng)該包含一個?oauth_token?。//??如果沒有則返回?0if(!isset($_GET[’oauth_token’])?&&?$_SESSION[’state’]==1)?$_SESSION[’state’]?=?0;try?{ $oauth?=?new?OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI); $oauth->enableDebug(); if(!isset($_GET[’oauth_token’])?&&?!$_SESSION[’state’])?{$request_token_info?=?$oauth->getRequestToken($req_url);$_SESSION[’secret’]?=?$request_token_info[’oauth_token_secret’];$_SESSION[’state’]?=?1;header(’Location:?’.$authurl.’?oauth_token=’.$request_token_info[’oauth_token’]);exit; }?else?if($_SESSION[’state’]==1)?{$oauth->setToken($_GET[’oauth_token’],$_SESSION[’secret’]);$access_token_info?=?$oauth->getAccessToken($acc_url);$_SESSION[’state’]?=?2;$_SESSION[’token’]?=?$access_token_info[’oauth_token’];$_SESSION[’secret’]?=?$access_token_info[’oauth_token_secret’]; } $oauth->setToken($_SESSION[’token’],$_SESSION[’secret’]); $oauth->fetch('$api_url/user.json'); $json?=?json_decode($oauth->getLastResponse()); print_r($json);}?catch(OAuthException?$E)?{ print_r($E);}?>三、相關(guān)函數(shù)oauth_get_sbs?— 生成一個簽名字符基串oauth_urlencode?— 將 URI 編碼為 RFC 3986 規(guī)范四、相關(guān)類及其成員函數(shù)
OAuth類
OAuth::__construct?— 新建一個 OAuth 對象OAuth::__destruct?— 析構(gòu)函數(shù)OAuth::disableDebug?— 關(guān)閉詳細(xì)的調(diào)試OAuth::disableRedirects?— 關(guān)閉重定向OAuth::disableSSLChecks?— 關(guān)閉 SSL 檢查OAuth::enableDebug?— 啟用詳細(xì)調(diào)試OAuth::enableRedirects?— 啟用重定向OAuth::enableSSLChecks?— 啟用 SSL 檢查OAuth::fetch?— 獲取一個 OAuth 受保護(hù)的資源OAuth::generateSignature?— 生成一個簽名OAuth::getAccessToken?— 獲取一個訪問令牌OAuth::getCAPath?— 獲取 CA 信息OAuth::getLastResponse?— 獲取最后一次的響應(yīng)OAuth::getLastResponseHeaders?— 獲取最后一次響應(yīng)的頭信息OAuth::getLastResponseInfo?— 獲取關(guān)于最后一次響應(yīng)的 HTTP 信息OAuth::getRequestHeader?— 生成 OAuth 頭信息字符串簽名OAuth::getRequestToken?— 獲取一個請求令牌OAuth::setAuthType?— 設(shè)置授權(quán)類型OAuth::setCAPath?— 設(shè)置 CA 路徑和信息OAuth::setNonce?— 為后續(xù)請求設(shè)置現(xiàn)時標(biāo)志OAuth::setRequestEngine?— 設(shè)置目標(biāo)請求引擎OAuth::setRSACertificate?— 設(shè)置 RSA 證書OAuth::setSSLChecks?— 調(diào)整特定的SSL請求檢查OAuth::setTimestamp?— 設(shè)置時間戳OAuth::setToken?— 設(shè)置令牌和 secretOAuth::setVersion?— 設(shè)置 OAuth 版本OAuthProvider 類
OAuthProvider::addRequiredParameter?— 添加必需的參數(shù)OAuthProvider::callconsumerHandler?— 調(diào)用 consumerNonceHandler 回調(diào)函數(shù)OAuthProvider::callTimestampNonceHandler?— 調(diào)用 timestampNonceHandler 回調(diào)函數(shù)OAuthProvider::calltokenHandler?— 調(diào)用 tokenNonceHandler 回調(diào)函數(shù)OAuthProvider::checkOAuthRequest?— 檢查一個 oauth 請求OAuthProvider::__construct?— 新建一個 OAuthProvider 對象OAuthProvider::consumerHandler?— 設(shè)置 consumerHandler 句柄回調(diào)函數(shù)OAuthProvider::generateToken?— 生成一個隨機(jī)令牌OAuthProvider::is2LeggedEndpoint?— is2LeggedEndpointOAuthProvider::isRequestTokenEndpoint?— 設(shè)置 isRequestTokenEndpointOAuthProvider::removeRequiredParameter?— 移除一個必需的參數(shù)OAuthProvider::reportProblem?— 報告問題OAuthProvider::setParam?— 設(shè)置一個參數(shù)OAuthProvider::setRequestTokenPath?— 設(shè)置請求令牌路徑OAuthProvider::timestampNonceHandler?— 設(shè)置 timestampNonceHandler 句柄回調(diào)函數(shù)OAuthProvider::tokenHandler?— 設(shè)置 tokenHandler 句柄回調(diào)函數(shù)OAuthException 類
OAuthException?— OAuthException 類相關(guān)文章:
1. idea設(shè)置代碼格式化的方法步驟2. 簡單明了帶你了解CSS Modules3. 關(guān)于ajax異步訪問數(shù)據(jù)的問題4. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明5. HTTP協(xié)議常用的請求頭和響應(yīng)頭響應(yīng)詳解說明(學(xué)習(xí))6. 聊一聊數(shù)據(jù)請求中Ajax、Fetch及Axios的區(qū)別7. Fly攔截全局Ajax請求的方法8. 面向小白visual studio 2019 添加第三方庫教程(入門)9. CSS百分比padding制作圖片自適應(yīng)布局10. HTML iframe標(biāo)簽用法案例詳解
