webiik/oauth1client

OAuth1Client 允许您连接到任何 OAuth1 服务器。

1.1 2019-08-08 10:20 UTC

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);

资源