User:Pemaksa/WikipediaAuth.js

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