webiik / oauth1client
OAuth1Client 允许您连接到任何 OAuth1 服务器。
1.1
2019-08-08 10:20 UTC
Requires
- php: >=7.2
- webiik/curlhttpclient: ^1
- webiik/token: ^1
This package is auto-updated.
Last update: 2024-09-08 21:33:03 UTC
README
OAuth1Client
OAuth1Client 允许您连接到任何 OAuth1 服务器。只需按照以下示例中的步骤进行操作。
安装
composer require webiik/oauth1client
示例
// Twitter Example // Prepare dependencies $chc = new \Webiik\CurlHttpClient\CurlHttpClient(); $token = new \Webiik\Token\Token(); // Instantiate OAuth1 client $oAuth1Client = new \Webiik\OAuth1Client\OAuth1Client($chc, $token); // Set your callback URL // OAuth1 server redirects users to this URL, after user verification $oAuth1Client->setCallbackUrl('https://127.0.0.1/webiik/'); // Set OAuth1 server endpoints $oAuth1Client->setAuthorizeUrl('https://api.twitter.com/oauth/authenticate'); $oAuth1Client->setRequestTokenUrl('https://api.twitter.com/oauth/request_token'); $oAuth1Client->setAccessTokenUrl('https://api.twitter.com/oauth/access_token'); // Set OAuth1 server access credentials (create yours at https://developer.twitter.com/en/apps) $oAuth1Client->setConsumerKey('your-api-key'); $oAuth1Client->setConsumerSecret('your-api-secret'); // Make API calls... // Notice: It's a good idea to separate below steps to individual routes. if (!isset($_GET['oauth_verifier'])) { // 1. Prepare Twitter login link echo '<a href="' . $oAuth1Client->getAuthorizeUrl() . '" target="_blank">Authorize with Twitter</a><br/>'; } if (isset($_GET['oauth_verifier'])) { // 2. Verify oauth_token $accessToken = $oAuth1Client->getAccessToken(); } if (isset($accessToken, $accessToken['oauth_token'], $accessToken['oauth_token_sercret'])) { // 3. oauth_token is valid, user is authorized by Twitter // Access protected resources... $urlParameters = [ 'skip_status' => 'true', ]; $res = $oAuth1Client->get('https://api.twitter.com/1.1/account/verify_credentials.json', $accessToken['oauth_token'], $accessToken['oauth_token_secret'], $urlParameters); header('Content-Type: application/json'); echo $res; }
配置
在您能够连接到任何 OAuth1 服务器之前,您必须正确配置访问凭证和端点。
setConsumerKey
setConsumerKey(string $key): void
setConsumerKey() 设置消费者密钥。
$oAuth1Client->setConsumerKey('your-api-key');
setConsumerSecret
setConsumerSecret(string $secret): void
setConsumerSecret() 设置消费者密钥。
$oAuth1Client->setConsumerSecret('your-api-secret');
setSignatureSecret
setSignatureSecret(string $secret): void
setSignatureSecret() 设置签名密钥。通常它是可选的或不必要的。
$oAuth1Client->setSignatureSecret('your-api-signature-secret');
setRequestTokenUrl
setRequestTokenUrl(string $url): void
setRequestTokenUrl() 设置获取请求令牌的 URL。
$oAuth1Client->setRequestTokenUrl('https://api.twitter.com/oauth/request_token');
setAuthorizeUrl
setAuthorizeUrl(string $url): void
setAuthorizeUrl() 设置在 OAuth1 服务器上授权请求令牌的 URL。
$oAuth1Client->setAuthorizeUrl('https://api.twitter.com/oauth/authenticate');
setCallbackUrl
setCallbackUrl(string $url): void
setCallbackUrl() 设置授权后重定向用户的 URL。
$oAuth1Client->setCallbackUrl('https://127.0.0.1/webiik/');
setAccessTokenUrl
setAccessTokenUrl(string $url): void
setAccessTokenUrl() 设置获取访问令牌的 URL。
$oAuth1Client->setAccessTokenUrl('https://api.twitter.com/oauth/access_token');
登录
getAuthorizeUrl
getAuthorizeUrl($requestToken): string
getAuthorizeUrl() 向由 setRequestTokenUrl() 设置的 URL 发送 HTTP POST 请求,并准备授权链接到由 setAuthorizeUrl() 设置的 URL。
$link = $oAuth1Client->getAuthorizeUrl();
授权
getAccessToken
getAccessToken()
getAccessToken() 向由 setAccessTokenUrl() 设置的 URL 发送 HTTP POST 请求,并在成功时返回包含 'oauth_token' 的数组,在错误时返回 cURL 错误消息的字符串。
$accessToken = $oAuth1Client->getAccessToken();
API 访问
get
get(string $url, string $oauth_token, string $oauth_token_secret, array $params = []): string
get() 向 OAuth1 API 端点发送授权的 HTTP GET 请求。
$urlParameters = [ 'skip_status' => 'true', ]; $response = $oAuth1Client->get('https://api.twitter.com/1.1/account/verify_credentials.json', $accessToken['oauth_token'], $accessToken['oauth_token_secret'], $urlParameters);
post
post(string $url, string $oauth_token, string $oauth_token_secret, array $params = [], array $postData = []): string
post() 向 OAuth1 API 端点发送授权的 HTTP POST 请求。
$urlParameters = [ 'include_entities' => 'true', ]; $postData = [ 'status' => 'Hello Ladies + Gentlemen, a signed OAuth request!', ]; $response = $oAuth1Client->post('https://api.twitter.com/1.1/statuses/update.json', $accessToken['oauth_token'], $accessToken['oauth_token_secret'], $urlParameters, $postData);