Javascript Google oauth 400响应:否';访问控制允许原点';请求的资源上存在标头

Javascript Google oauth 400响应:否';访问控制允许原点';请求的资源上存在标头,javascript,google-api,google-oauth,Javascript,Google Api,Google Oauth,我正在尝试从客户端javascript向具有google日历范围的google oauth端点()发出请求。问题是,我不能使用google的javascript客户端,因为我实际上使用的是webpack,我不想在bundle.js之外单独包含javascript脚本 因此,我使用axios()使HTTP到达前面提到的令牌端点。以下是我的请求: https://accounts.google.com/o/oauth2/v2/auth?response_type=token&client_i

我正在尝试从客户端javascript向具有google日历范围的google oauth端点()发出请求。问题是,我不能使用google的javascript客户端,因为我实际上使用的是webpack,我不想在bundle.js之外单独包含javascript脚本

因此,我使用axios()使HTTP到达前面提到的令牌端点。以下是我的请求:

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
我使用crypto js库的MD5函数生成了nonce。以下是请求头:

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
我从谷歌得到的回复如下:

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
我在chrome 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.
我已经确保在我的google应用程序控制台中,在相应的客户端id下,我已经添加到“Authorized Javascript Origins”字段,并且我已经确保为google calendar api启用授权。我已经读到web客户机隐式身份验证流不使用重定向uri,但我已经尝试填写它(我已经尝试了值和,这是我发送请求的页面)。花了几个小时在谷歌上搜索,我没有发现任何迹象表明我正在做的事情不应该起作用


因此,我的问题是,如果我允许作为客户机ID的授权来源,为什么我仍然无法向该auth端点发送请求(尽管是通过javascript?

我认为您应该将浏览器重定向到该oauth2端点,而不仅仅是尝试向其发出ajax请求


我认为您应该将浏览器重定向到此oauth2端点,而不仅仅是尝试向其发出ajax请求@WiktorZychla:出于某种原因,我觉得谷歌会给我发送重定向响应,但考虑到我提出了CORS请求,我意识到这有多愚蠢。现在这就更有意义了,谢谢!如果这条评论适合你,我会把它作为回答发出去。@WiktorZychla:很抱歉回复太晚。这对我很管用。我会把你以后的评论作为答案。@AndrewChen你是如何解决这个问题的。我得到了CORS错误。还有,如何重定向浏览器?