var WikipediaAuth;
var SCOPE = 'https://en.wikipedia.org/w/api.php';
function handleClientLoad() {
// Load the API's client and auth2 modules.
// Call the initClient function after the modules load.
api.load('client:auth2', initClient);
}
function initClient() {
// In practice, your app can retrieve one or more discovery documents.
var discoveryUrl = 'https://en.wikipedia.org/w/rest.php/v1/page/Earth';
// Initialize the api.client object, which app uses to make API requests.
// Get API key and client ID from API Console.
// 'scope' field specifies space-delimited list of access scopes.
api.client.init({
'apiKey': 'YOUR_API_KEY',
'clientId': 'YOUR_CLIENT_ID',
'discoveryDocs': [discoveryUrl],
'scope': SCOPE
}).then(function () {
WikipediaAuth = api.auth2.getAuthInstance();
// Listen for sign-in state changes.
WikipediaAuth.isSignedIn.listen(updateSigninStatus);
// Handle initial sign-in state. (Determine if user is already signed in.)
var user = WikipediaAuth.currentUser.get();
setSigninStatus();
// Call handleAuthClick function when user clicks on
// "Sign In/Authorize" button.
$('#sign-in-or-out-button').click(function() {
handleAuthClick();
});
$('#revoke-access-button').click(function() {
revokeAccess();
});
});
}
function handleAuthClick() {
if (WikipediaAuth.isSignedIn.get()) {
// User is authorized and has clicked "Sign out" button.
WikipediaAuth.signOut();
} else {
// User is not signed in. Start Wikipedia auth flow.
WikipediaAuth.signIn();
}
}
function revokeAccess() {
WikipediaAuth.disconnect();
}
function setSigninStatus() {
var user = WikipediaAuth.currentUser.get();
var isAuthorized = user.hasGrantedScopes(SCOPE);
if (isAuthorized) {
$('#sign-in-or-out-button').html('Sign out');
$('#revoke-access-button').css('display', 'inline-block');
$('#auth-status').html('You are currently signed in and have granted ' +
'access to this app.');
} else {
$('#sign-in-or-out-button').html('Sign In/Authorize');
$('#revoke-access-button').css('display', 'none');
$('#auth-status').html('You have not authorized this app or you are ' +
'signed out.');
}
}
function updateSigninStatus() {
setSigninStatus();
}