首页 > 解决方案 > 我使用什么 URL 将用户发送到 google oauth2 同意屏幕

问题描述

我正在尝试编写一个简单的应用程序来使用用户身份验证令牌和 html 请求访问 google 的 api,但是我正在努力寻找我发送给用户的 URL,以便他们选择个人资料并登录。

标签: google-apigoogle-oauthgoogle-authenticationgoogle-api-dotnet-client

解决方案


URL 我也发送给用户,以便他们选择个人资料并登录。

问题是您混淆了授权和身份验证。Oauth2 用户可以授权您访问他们的数据,这与登录您的 OpenID 连接应用程序无关。

但是,您可能正在寻找的是 oauth2 同意屏幕,这是用户同意您的应用程序访问其数据的屏幕。

https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri={redirectURI}&scope={scope}&response_type=code

请记住,如果他们同意,这只是第一步,然后您将获得一个授权代码,您的应用程序必须随后将授权代码交换为可用于访问 api 的访问令牌。

您可能会发现此视频有助于理解填充 Oauth2 舞蹈。使用 curl 了解 Google OAuth 2.0

如果您要登录用户并检查他们的个人资料,这样会更好

[GoogleScopedAuthorize(PeopleServiceService.ScopeConstants.UserinfoProfile)]
 public async Task UserProfile([FromServices] IGoogleAuthProvider auth)
        {
            var cred = await auth.GetCredentialAsync();
            var service = new PeopleServiceService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = cred
                });
            

            var request = service.People.Get("people/me");
            request.PersonFields = "names";
            var person = await request.ExecuteAsync();

            return View(person);
        }

完整的教程和配套视频可以在这里找到Asp .net core 3 和 Google login


推荐阅读