html //来源http://jsbin.com/wobede
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html //来源http://jsbin.com/wobede相关的知识,希望对你有一定的参考价值。
<html><head></head><body>
<script>
var YOUR_CLIENT_ID = '105783735454714472723';
var YOUR_REDIRECT_URI = 'REPLACE_THIS_VALUE';
var queryString = location.hash.substring(1);
// Parse query string to see if page request is coming from OAuth 2.0 server.
var params = {};
var regex = /([^&=]+)=([^&]*)/g, m;
while (m = regex.exec(queryString)) {
params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
// Try to exchange the param values for an access token.
exchangeOAuth2Token(params);
}
// If there's an access token, try an API request.
// Otherwise, start OAuth 2.0 flow.
function trySampleRequest() {
var params = JSON.parse(localStorage.getItem('oauth2-test-params'));
if (params && params['access_token']) {
var xhr = new XMLHttpRequest();
xhr.open('GET',
'https://www.googleapis.com/drive/v3/about?fields=user&' +
'access_token=' + params['access_token']);
xhr.onreadystatechange = function (e) {
console.log(xhr.response);
};
xhr.send(null);
} else {
oauth2SignIn();
}
}
/*
* Create form to request access token from Google's OAuth 2.0 server.
*/
function oauth2SignIn() {
// Google's OAuth 2.0 endpoint for requesting an access token
var oauth2Endpoint = 'https://accounts.google.com/o/oauth2/v2/auth';
// Create element to open OAuth 2.0 endpoint in new window.
var form = document.createElement('form');
form.setAttribute('method', 'GET'); // Send as a GET request.
form.setAttribute('action', oauth2Endpoint);
// Parameters to pass to OAuth 2.0 endpoint.
var params = {'client_id': YOUR_CLIENT_ID,
'redirect_uri': YOUR_REDIRECT_URI,
'scope': 'https://www.googleapis.com/auth/drive.metadata.readonly',
'state': 'try_sample_request',
'include_granted_scopes': 'true',
'response_type': 'token'};
// Add form parameters as hidden input values.
for (var p in params) {
var input = document.createElement('input');
input.setAttribute('type', 'hidden');
input.setAttribute('name', p);
input.setAttribute('value', params[p]);
form.appendChild(input);
}
// Add form to page and submit it to open the OAuth 2.0 endpoint.
document.body.appendChild(form);
form.submit();
}
/* Verify the access token received on the query string. */
function exchangeOAuth2Token(params) {
var oauth2Endpoint = 'https://www.googleapis.com/oauth2/v3/tokeninfo';
if (params['access_token']) {
var xhr = new XMLHttpRequest();
xhr.open('POST', oauth2Endpoint + '?access_token=' + params['access_token']);
xhr.onreadystatechange = function (e) {
var response = JSON.parse(xhr.response);
// When request is finished, verify that the 'aud' property in the
// response matches YOUR_CLIENT_ID.
if (xhr.readyState == 4 &&
xhr.status == 200 &&
response['aud'] &&
response['aud'] == YOUR_CLIENT_ID) {
// Store granted scopes in local storage to facilitate
// incremental authorization.
params['scope'] = response['scope'];
localStorage.setItem('oauth2-test-params', JSON.stringify(params) );
if (params['state'] == 'try_sample_request') {
trySampleRequest();
}
} else if (xhr.readyState == 4) {
console.log('There was an error processing the token, another ' +
'response was returned, or the token was invalid.')
}
};
xhr.send(null);
}
}
</script>
<button onclick="trySampleRequest();">Try sample request</button>
</body></html>
以上是关于html //来源http://jsbin.com/wobede的主要内容,如果未能解决你的问题,请参考以下文章
html //来源http://jsbin.com/veqodam
html //来源http://jsbin.com/dahasaj
html //来源http://jsbin.com/wobede