Google OAuth ASP.NET MVC 示例代码的 CORS 问题

CORS Issue with Google OAuth ASP.NET MVC sample code

我正在使用此代码示例 Web applications (ASP.NET MVC) 访问 Google 课堂 API。

我已经在 Google 云平台项目中添加了这些。

我网页中的一个按钮调用上面示例代码中给出的 /Home/IndexAsync link

我刚刚将我的控制器从 HomeController 重命名为 GoogleClassroomController 所以我的按钮实际上调用了 /GoogleClassroom/IndexAsync

IndexAsync else 方法的一部分被执行

result.RedirectUri 在 else 部分的值是

https://accounts.google.com/o/oauth2/v2/auth?
    access_type=offline&
    response_type=code&
    client_id=abc.apps.googleusercontent.com&
    redirect_uri=http%3A%2F%2Flocalhost%3A51234%2FAuthCallback%2FIndexAsync&
    scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fclassroom.courses.readonly&
    state=http%3A%2F%2Flocalhost%3A51234%2FGoogleClassroom%2FIndexAsync

在浏览器控制台中出现 2 个错误

Access to XMLHttpRequest at 
'<above_URL>' 
(redirected from 'http://localhost:51234/GoogleClassroom/IndexAsync')
from origin 'http://localhost:51234' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GET <above_URL> net::ERR_FAILED

我做错了什么?

我们不能从 http://localhost:51234 调用 https://accounts.google.com/o/oauth2/v2/auth 吗?

我认为在云项目中将 http://localhost:51234 添加为授权 JavaScript 源将允许我进行此调用。

已修复!

my button actually calls /GoogleClassroom/IndexAsync

我们使用自定义函数进行这些调用。进一步调查后,我发现这个自定义函数在内部使用 $.ajax()

现在单击按钮,我写了 window.location.href = "/GoogleClassroom/IndexAsync";,整个“使用 Google 登录”流程正常工作