Google API в Javascript
Я пытаюсь получить информацию о календарях из google в javascript. Я читал инструкции "как". Они не помогли. Даже этот "полезный" код с копией (для авторизации) этого не сделал. Кто-нибудь будет так добр, чтобы научить меня, как использовать google api? Может быть, у кого-то есть образцы для обмена
И этот красивый код js:
<html>
<button id="authorize-button" onclick='handleAuthClick()'>Authorize</button>
<script type="text/javascript">
var clientId = '***';
var apiKey = '***';
var scopes = 'https://www.googleapis.com/auth/plus.me';
function handleClientLoad() {
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
}
function handleAuthResult(authResult) {
var authorizeButton = document.getElementById('authorize-button');
if (authResult && !authResult.error) {
authorizeButton.style.visibility = 'hidden';
makeApiCall();
} else {
authorizeButton.style.visibility = '';
authorizeButton.onclick = handleAuthClick;
}
}
function handleAuthClick(event) {
// Step 3: get authorization to use private data
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
return false;
}
// Load the API and make an API call. Display the results on the screen.
function makeApiCall() {
// Step 4: Load the Google+ API
gapi.client.load('plus', 'v1', function() {
// Step 5: Assemble the API request
var request = gapi.client.plus.people.get({
'userId': 'me'
});
// Step 6: Execute the API request
request.execute(function(resp) {
var heading = document.createElement('h4');
var image = document.createElement('img');
image.src = resp.image.url;
heading.appendChild(image);
heading.appendChild(document.createTextNode(resp.displayName));
document.getElementById('content').appendChild(heading);
});
});
}
</script>
Сообщение об ошибке (из консоли):
'Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('file://') does not match the recipient window origin ('null').'
поэтому я застрял на "gapi.auth.authorize". ничего не работает после
Ответы
Ответ 1
Основываясь на полученной ошибке, я полагаю, что у вас либо нет надлежащего Javascript Origin на консоли Google API, у вас есть свой идентификатор клиента от и/или вы пытаетесь запустить script из файловой системы, а не через веб-сервер, даже один из которых работает на localhost
. Клиент Google API, как я уже мог сказать, не принимает запросы авторизации из файловой системы или любого домена, который не настроен на запрос авторизации в соответствии с предоставленным идентификатором клиента.
Ответ 2
Ссылка на консоль Google API:
В идентификаторе клиента для веб-приложения:
Javascript Origins: http://localhost:3000/
Ключ для приложений браузера:
Отправляющие: http://localhost:3000/
localhost будет работать на 100%
Ответ 3
Я получил ту же ошибку и, как вам было угодно, после запуска html файла в решении локального веб-сервера.
i создал учетные данные для веб-приложения и установил следующие значения как для моего локального, так и для http://localhost:5000" string
"Authorized JavaScript origins"
"Authorized redirect URIs
я также проверил json файл. В результате я получил следующий json файл.
{"web":
{
"client_id":"myClientID",
"project_id":"my-project",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"XqXmgQGrst4xkZ2pgJh3Omxg",
"redirect_uris":["http://localhost:5000"],
"javascript_origins":["http://localhost:5000"]
}
}
https://developers.google.com/drive/v2/web/auth/web-client
Ответ 4
Некоторые API будут отлично работать при запросе из локальных файлов, но некоторые из них не будут работать.
В ответ на такую ошибку, как ваша, попробуйте обслуживать ваши файлы с веб-сервера. Если вам нужен быстрый веб-сервер, используйте встроенный HTTP-сервер Python (в системах Mac OSX и Linux предустановлен Python). Этот HTTP-сервер может превратить любой каталог в вашу систему в ваш каталог веб-сервера. cd
в каталог проекта и выполните следующую команду:
python -m SimpleHTTPServer 3000
Номер в конце - это номер порта, на котором будет запущен ваш http-сервер, и вы можете изменить этот номер порта. В нашем примере ваш каталог будет обслуживаться из: http://localhost:3000
.