User:DatGuy/sandbox
Installation:
$ composer require mediawiki/oauthclient
Usage:
session_start();
use MediaWiki\OAuthClient\ClientConfig;
use MediaWiki\OAuthClient\Consumer;
use MediaWiki\OAuthClient\Client;
// Ini file with consumer key and secret key. Don't forget to hide this.
$ini = parse_ini_file( getcwd().'/login.ini' );
if ( $ini === false ) {
header( "HTTP/1.1 $errorCode Internal Server Error" );
echo 'The ini file could not be read';
exit(0);
}
if (!isset( $ini['consumerKey'] ) ||
!isset( $ini['consumerSecret'] )
) {
header( "HTTP/1.1 $errorCode Internal Server Error" );
echo 'Required configuration directives not found in ini file';
exit(0);
}
$endpoint = 'https://en.wikipedia.org/w/index.php?title=Special:OAuth';
// $redir = 'https://localhost/view/Special:OAuth?'; Is this needed?
$consumerKey = $ini['consumerKey'];
$consumerSecret = $ini['consumerSecret'];
$conf = new ClientConfig( $endpoint );
// $conf->setRedirURL( $redir ); Not sure what it does
$conf->setConsumer( new Consumer( $consumerKey, $consumerSecret ) );
$client = new Client( $conf );
// Step 1 = Get a request token
list( $next, $token ) = $client->initiate();
// Define token and secret token. Will use this later.
$_SESSION['token'] = $token->key;
$_SESSION['secrettoken'] = $token->secret;
// Step 2 - Have the user authorize your app. Use the 'oauth_verifier'
// GET parameter when the user is redirected
// back to the callback url you registered.
header("Location: $next");
</source>
New file: Your callback URL
<source lang="php">
session_start();
require_once 'vendor/autoload.php';
use MediaWiki\OAuthClient\ClientConfig;
use MediaWiki\OAuthClient\Consumer;
use MediaWiki\OAuthClient\Client;
if ( isset( $_GET['oauth_verifier'] ) ) {
// Redefine $client
$ini = parse_ini_file( getcwd().'/login.ini' );
$endpoint = 'https://en.wikipedia.org/w/index.php?title=Special:OAuth';
$consumerKey = $ini['consumerKey'];
$consumerSecret = $ini['consumerSecret'];
$conf = new ClientConfig( $endpoint );
$conf->setConsumer( new Consumer( $consumerKey, $consumerSecret ) );
$client = new Client( $conf );
// Use $_GET to find the verifier
$verifyCode = $_GET['oauth_verifier'];
// Remake the token
$requestToken = new MediaWiki\OAuthClient\Token( $_SESSION['token'], $_SESSION['secrettoken'] );
$accessToken = $client->complete( $requestToken, $verifyCode );
// If we want to authenticate the user
$ident = $client->identify( $accessToken );
}
To logout, use session_destroy();