Прогноз Google api javascript "message": "Требуется вход в систему"
Я пытался реализовать простой клиент JavaScript, который позволил бы мне использовать предсказание Google; Я попытался имитировать аутентификацию (Oauth 2.0) в этом уроке с помощью прогноза Google.
Это мой код:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var _DATA = {
"input": {
"csvInstance": [
"je m'appelle dali"
]
}
}
var API_KEY =
var OAUTHURL = 'https://accounts.google.com/o/oauth2/auth?';
var VALIDURL = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=';
var SCOPE = 'https://www.googleapis.com/auth/prediction';
var CLIENTID =
var REDIRECT = 'http://localhost:6666/GoogleOauth/GoogleOauth.html'
var TYPE = 'token';
var TOKEN = '';
var _url = OAUTHURL + 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE;
function login() {
var win = window.open(_url, "windowname1", 'width=800, height=600');
var pollTimer = window.setInterval(function() {
try {
console.log(win.document.URL);
if (win.document.URL.indexOf(REDIRECT) != -1) {
window.clearInterval(pollTimer);
var url = win.document.URL;
acToken = gup(url, 'access_token');
tokenType = gup(url, 'token_type');
expiresIn = gup(url, 'expires_in');
win.close();
validateToken(acToken);
}
} catch(e) {
}
}, 500);
}
function validateToken(token) {
$.ajax({
url: VALIDURL + token,
data: null,
success: function(responseText){
getPrediction;
loggedIn = true;
$('#loginText').hide();
$('#logoutText').show();
},
dataType: "jsonp"
});
}
function getPrediction() {
$.ajax({
url: 'https://www.googleapis.com/prediction/v1.6/projects/coderscloud-1/trainedmodels/CC-1/predict?key=' + API_KEY,
data: _DATA,
success: function(resp) {
alert(JSON.stringify(resp));
},
dataType: "jsonp"
});
}
//credits: http://www.netlobo.com/url_query_string_javascript.html
function gup(url, name) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\#&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
if( results == null )
return "";
else
return results[1];
}
function startLogoutPolling() {
$('#loginText').show();
$('#logoutText').hide();
loggedIn = false;
}
</script>
</head>
<body>
<a href='#' onClick='login();' id="loginText"> Click here to login </a>
<a href="#" style="display:none" id="logoutText" target='myIFrame' onclick="myIFrame.location='https://www.google.com/accounts/Logout'; startLogoutPolling();return false;"> Click here to logout </a>
</body>
</html>
Ajax-вызов вернул
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
1 ответ
Решение
Вы пропустили шаг. Пока у вас нет аутентифицированного пользователя, вы не можете ничего запрашивать.
Шаг 3: Аутентификация и авторизация во всплывающем окне
Давайте покажем фактическое диалоговое окно аутентификации во всплывающем окне. Переопределите функцию входа в систему следующим образом: