2016-04-18 2 views
4

Я пытаюсь сделать запрос с клиентского javascript на конечную точку google oauth (https://accounts.google.com/o/oauth2/v2/auth) с областью календаря Google , Дело в том, что я не могу использовать javascript-клиент google, потому что на самом деле я использую webpack, и я не хочу отдельно включать javascript-скрипт вне моего пакета.js.Ответ Google oauth 400: заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе

Так что вместо этого я использую axios (https://github.com/mzabriskie/axios), чтобы сделать HTTP GET на вышеупомянутую конечную точку маркера. Вот что мой запрос выглядит следующим образом:

https://accounts.google.com/o/oauth2/v2/auth?response_type=token&client_id={client id here}&nonce=c8ef445540186351d9108ad64d7a5b65&scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar 

Я сгенерировал одноразовый номер с использованием функции MD5 Криптовальной-JS библиотеки. Вот заголовки запроса:

Accept:application/json, text/plain, */* 
Origin:http://localhost:8000 
Referer:http://localhost:8000/admin 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 

Ответ я получаю от Google выглядит следующим образом:

alt-svc:quic=":443"; ma=2592000; v="32,31,30,29,28,27,26,25" 
alternate-protocol:443:quic 
cache-control:no-cache, no-store, max-age=0, must-revalidate 
content-encoding:gzip 
content-type:text/html; charset=utf-8 
date:Mon, 18 Apr 2016 07:16:21 GMT 
expires:Fri, 01 Jan 1990 00:00:00 GMT 
pragma:no-cache 
server:GSE 
status:400 
x-content-type-options:nosniff 
x-frame-options:SAMEORIGIN 
x-xss-protection:1; mode=block 

И я этот журнал в моем хромовые Devtools консоли:

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/v2/auth?response_type=token&client_id={client id here}&scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 400. 

Я ve убедился, что в моей консоли приложений Google под соответствующим идентификатором клиента я добавил http://localhost:8000 в поле «Авторизованные Javascript Origins», и я включил разрешение на авторизацию для Google Cale ndar api. Я прочитал, что неявный поток аутентификации веб-клиента не использует перенаправление uri, но я попытался это сделать независимо (я пробовал значения http://localhost:8000 и http://localhost:8000/admin, который является страницей, на которую я отправляю свой запрос от). Проведя много времени, я не нашел ничего, чтобы предположить, что то, что я делаю, не должно работать.

Итак, мой вопрос: если я разрешил http://localhost:8000 в качестве авторизованного источника для моего идентификатора клиента, почему я все еще не могу отправить запрос (хотя и через javascript) в эту конечную точку auth?

+0

Я считаю, что вы должны ** ** перенаправлять браузер на эту oauth2 конечную точку, а не просто пытаюсь сделать запрос AJAX к нему. https://developers.google.com/identity/protocols/OAuth2UserAgent#overview –

+0

@WiktorZychla: По какой-то причине у меня создалось впечатление, что google отправит мне ответ на перенаправление, но потом я понял, насколько тупой это будет, учитывая, что я сделав запрос CORS. Теперь это имеет гораздо больше смысла, спасибо! –

+0

ping назад, если этот комментарий вам подходит, я бы опубликовал его как ответ. –

ответ