gpt4 book ai didi

javascript - 如何在服务帐户调用 Google oAuth 时处理 CORS?

转载 作者:行者123 更新时间:2023-12-01 02:54:09 26 4
gpt4 key购买 nike

我使用服务帐户访问 Google 日历。这意味着不会提示日历所有者进行授权。

这在 Python 中运行良好,我使用特定的正文对 https://accounts.google.com/o/oauth2/token 进行 requests 调用。这让我取回了一个稍后可以使用的 token 。

我现在需要在独立浏览器(Chrome - 无需用户交互)中运行一个应用程序,并尝试直接将此调用移植为

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)) })

但我收到了 Google 的回复

Failed to load https://accounts.google.com/o/oauth2/token: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://devd.io' is therefore not allowed access. The response had HTTP status code 400. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

我对 CORS 的有限理解(previous answer 是一本非常好的读物)

No 'Access-Control-Allow-Origin' header is present on the requested resource

意味着它不存在于 response header 中,这意味着 Google 不希望我在从浏览器运行时通过 JS 访问其资源(它指向 https://accounts.google.com)。

这可能是一个好主意,但我控制从代码到浏览器的所有元素,并且希望以与在非浏览器环境中获取 token 相同的方式获取该 token ,特别是我正在工作的 Python 代码。

如何让 https://accounts.google.com 向我发回一个 Access-Control-Allow-Origin header 来告诉我的浏览器可以接听电话吗?

最佳答案

你不能。

客户端和服务器端代码需要以不同的方式与 OAuth 交互。

谷歌 provide documentation explaining the client side process

重要的是,其中一部分涉及重定向到 Google 的服务器,而不是使用 fetchXMLHttpRequest 访问它们。

关于javascript - 如何在服务帐户调用 Google oAuth 时处理 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com