我使用服务帐户访问Google日历。这意味着日历的所有者不会被提示授权。如何处理Google oAuth的服务帐户调用中的CORS?
这在Python中正常工作,我用requests
调用https://accounts.google.com/o/oauth2/token
与一个特定的主体。这让我回到了以后可以使用的令牌。
我现在需要有一个独立的浏览器中运行的应用程序(铬 - 无需用户交互),并试图直接端口此调用作为
fetch('https://accounts.google.com/o/oauth2/token',
{
method: 'POST',
body: JSON.stringify(body),
})
.then(function(res) { return res.json(); })
.then(function(data) { alert(JSON.stringify(data)) })
,但我从谷歌
回复未能加载https://accounts.google.com/o/oauth2/token:否 “访问控制允许来源”标题存在于所请求的资源 。因此不允许访问原产地'http://devd.io'。该 响应了HTTP状态代码400。如果不透明响应提供您的 需求,设置请求的模式,以“无CORS”获取禁用 CORS的资源。
我有限的CORS的理解(一previous answer是一个非常良好的阅读)是
否“访问控制允许来源”标头出现在请求 资源
意味着它不存在于响应标题中,这意味着Google不希望我通过浏览器从JS访问其资源(指向其他https://accounts.google.com
)。
这可能是一个好主意,但我控制所有的元素,从代码到浏览器并想获得该令牌以同样的方式,我得到它在非浏览器环境,特别是我的工作Python代码。
如何告知https://accounts.google.com
发送回Access-Control-Allow-Origin
标题,告诉我的浏览器可以接受呼叫?
查看ht tps://stackoverflow.com/questions/43276462/cors-issue-while-requesting-access-token-google-oauth-2/43276710#43276710 – sideshowbarker
@sideshowbarker:*“OAuth2身份验证端点不支持AJAX的设计” * - 我不明白这一点。从服务器角度来看,AJAX只是一个HTTP调用。它支持非交互式身份验证(以及对给定范围的相关授权) - 在我提到的问题中的服务器代码中,这可以正常工作。 – WoJ