gpt4 book ai didi

asp.net-core - 使用 ASP.NET Core 后端服务器验证 Google 访问 token

转载 作者:行者123 更新时间:2023-12-04 15:19:13 24 4
gpt4 key购买 nike

我在客户端有 Angular2,在服务器端有 ASP.NET Core。我用 JavaScriptServices (aspnetcore-spa 模板)。
对于身份验证,我使用 OpenIddict我遵循示例 here .

现在我在 Controller 类方法中的服务器端,我想验证 id_token 因为这是在 this 上建议的边:

Important: Do not use the Google IDs returned by getId() or the user's profile information to communicate the currently signed in user to your backend server. Instead, send ID tokens, which can be securely validated on the server.



而且我还想通过 ASP.NET Core 身份在我的数据库中注册用户(保存电子邮件、个人资料...)。

我想用 Google API client Library for .NET 获取用户信息并存储 refresh_token。几年前,我设法用 PHP 做到了,但我无法用 .NET 弄明白。
我下载了 nuget 包:Google.Apis、Google.Apis.OAuth2.v2、Google.Apis.Plus.v1。

我不确定我需要哪个 nuget 包,我应该使用哪个类,如何设置 Google ServerKey 以及如何从我从 gapi.signin2 button 获得的信息中获取用户信息.

简单来说:
如何使用 Google .NET 客户端库从 .NET 验证 id_token?

最佳答案

我找到了解决方案 here .它很旧,但它有效。

var googleInitializer = new BaseClientService.Initializer();
googleInitializer.ApiKey = this.config["Authentication:Google:ServerKey"];
Oauth2Service ser = new Oauth2Service(googleInitializer);
Oauth2Service.TokeninfoRequest req = ser.Tokeninfo();
req.AccessToken = request.AccessToken; //access token received from Google SignIn button
Tokeninfo userinfo = await req.ExecuteAsync();

我没有弄清楚如何在服务器上获取显示名称和图片。但它可以在客户端完成:
onGoogleLoginSuccess(user: gapi.auth2.GoogleUser)
{
console.log("basic profile", user.getBasicProfile());
}

如果有人知道更多更新的解决方案或如何在服务器上检索基本用户配置文件,请分享。

另外我可以使用 Google+,但要小心,因为 Google 帐户不是 Google+ 帐户。我没有 + 帐户并收到错误消息:

Google.Apis.Requests.RequestError Not Found [404] Errors [ Message[Not Found] Location[ - ] Reason[notFound] Domain[global] ]



在代码中:
var plusService = new PlusService(googleInitializer);
Person me = await plusService.People.Get(userinfo.UserId).ExecuteAsync();

但可以获取所有用户信息(图片、显示名称、名字、姓氏、生日...)

关于asp.net-core - 使用 ASP.NET Core 后端服务器验证 Google 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270721/

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