webiik/oauth1client

The OAuth1Client allows you to connect to any OAuth1 server.

1.1 2019-08-08 10:20 UTC

This package is auto-updated.

Last update: 2024-05-08 20:51:50 UTC


README

68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f77656269696b2f77656269696b2e737667 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646570656e64656e636965732d322d627269676874677265656e2e737667

OAuth1Client

The OAuth1Client allows you to connect to any OAuth1 server. Just follow the procedure described in the example below.

Installation

composer require webiik/oauth1client

Example

// 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;
}

Configuration

Before you can connect to any OAuth1 server, you have to properly configure access credentials and endpoints.

setConsumerKey

setConsumerKey(string $key): void

setConsumerKey() sets consumer key.

$oAuth1Client->setConsumerKey('your-api-key');

setConsumerSecret

setConsumerSecret(string $secret): void

setConsumerSecret() sets consumer secret.

$oAuth1Client->setConsumerSecret('your-api-secret');

setSignatureSecret

setSignatureSecret(string $secret): void

setSignatureSecret() sets signature secret. Usually it't optional or not required.

$oAuth1Client->setSignatureSecret('your-api-signature-secret');

setRequestTokenUrl

setRequestTokenUrl(string $url): void

setRequestTokenUrl() sets URL to obtain a request token.

$oAuth1Client->setRequestTokenUrl('https://api.twitter.com/oauth/request_token');

setAuthorizeUrl

setAuthorizeUrl(string $url): void

setAuthorizeUrl() sets URL to authorize a request token by user at OAuth1 server.

$oAuth1Client->setAuthorizeUrl('https://api.twitter.com/oauth/authenticate');

setCallbackUrl

setCallbackUrl(string $url): void

setCallbackUrl() sets URL to redirect a user after authorization.

$oAuth1Client->setCallbackUrl('https://127.0.0.1/webiik/');

setAccessTokenUrl

setAccessTokenUrl(string $url): void

setAccessTokenUrl() sets URL to obtain a access token.

$oAuth1Client->setAccessTokenUrl('https://api.twitter.com/oauth/access_token');

Login

getAuthorizeUrl

getAuthorizeUrl($requestToken): string

getAuthorizeUrl() makes HTTP POST request to a URL set by setRequestTokenUrl() and prepares authorized link to a URL set by setAuthorizeUrl().

$link = $oAuth1Client->getAuthorizeUrl();

Authorization

getAccessToken

getAccessToken()

getAccessToken() makes HTTP POST request to URL set by setAccessTokenUrl() and returns an array with 'oauth_token' on success and a string with cURL error message on error.

$accessToken = $oAuth1Client->getAccessToken();

API Access

get

get(string $url, string $oauth_token, string $oauth_token_secret, array $params = []): string

get() makes authorized HTTP GET request to OAuth1 API endpoint.

$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() makes authorized HTTP POST request to OAuth1 API endpoint.

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

Resources