Я пытаюсь создать веб-службу, которая подключается к API календаря Google. Пытаясь авторизовать свое приложение, я создал URL-адрес с необходимыми областями. Проблема в том, что когда я пытаюсь перенаправить клиента на сгенерированный URL-адрес, я получаю ошибку 405 со следующим сообщением:
Ответ на предварительный запрос не проходит проверку управления доступом: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, доступ к источнику 'http://localhost:8080' запрещен. В ответе был код состояния HTTP 405.
По большей части я следовал этому руководству: https://developers.google.com/identity/protocols/OAuth2WebServer с помощью клиентской библиотеки node.js.
Насколько я понимаю, кажется, что Google не настроил свой сервер для приема запросов из разных источников, чего я не понимаю, так это того, как я должен перенаправлять своих пользователей на их страницу авторизации, если я не могу отправить запрос из своего домена.
Вот соответствующий код:
export function authorize(req, res, callback): any {
let auth = new googleAuth();
let oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
if (// Check if we have previously stored a token.) {
oauth2Client.credentials = //get token;
callback(oauth2Client);
} else {
//redirect to google authentication page
let authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
state: '/',
scope: SCOPES
});
res.redirect(authUrl);
}
}
authUrl
, который вы пытаетесь нажать. Я думаю, что это, вероятно, не имеет никакого отношения к тому, принимает ли сервер запросы из разных источников или нет, но вы можете подтвердить это, используя curl или postman или какой-либо другой инструмент, чтобы отправить запрос OPTIONS на этот URL-адресauthUrl
и посмотреть, что вы получите в ответ. . Держу пари, ты получишь 405. - person sideshowbarker   schedule 10.08.2017