Mak*_*kla 6 google-api-dotnet-client google-plus-signin google-signin google-oauth-.net-client asp.net-core
我在客户端上有Angular2,在服务器端有ASP.NET Core.我使用JavaScriptServices(aspnetcore-spa模板).
对于身份验证,我使用OpenIddict,我在这里按照示例.
现在我在控制器类的方法在服务器端,我想因为这个建议来验证id_token 此方:
重要提示:请勿使用getId()返回的Google ID或用户的个人资料信息将当前登录的用户与您的后端服务器进行通信.而是发送ID令牌,可以在服务器上安全地验证.
我还想通过ASP.NET核心身份在我的数据库中注册用户(保存电子邮件,个人资料...).
我想使用Google API客户端库 来获取用户信息并存储refresh_token.几年前我设法用PHP做到了,但我无法用.NET来解决这个问题.
我下载了nuget软件包:Google.Apis,Google.Apis.OAuth2.v2,Google.Apis.Plus.v1.
我不确定我需要哪个nuget包,我应该使用哪个类,如何设置Google ServerKey以及如何从我从gapi.signin2按钮获取的信息中获取用户信息.
简单来说:
如何使用Google .NET Client库验证.NET中的id_token?
我在这里找到了解决方案。它很旧,但很有效。
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();
Run Code Online (Sandbox Code Playgroud)
我不知道如何获取服务器上的显示名称和图片。但可以在客户端完成:
onGoogleLoginSuccess(user: gapi.auth2.GoogleUser)
{
console.log("basic profile", user.getBasicProfile());
}
Run Code Online (Sandbox Code Playgroud)
如果有人知道更多更新的解决方案或如何在服务器上检索基本用户配置文件,请分享。
另外我可以使用Google+,但要小心,因为Google帐户不是Google+帐户。我没有 + 帐户并收到错误:
Google.Apis.Requests.RequestError 未找到 [404] 错误 [ 消息 [未找到] 位置 [ - ] 原因 [未找到] 域 [全局] ]
在代码中:
var plusService = new PlusService(googleInitializer);
Person me = await plusService.People.Get(userinfo.UserId).ExecuteAsync();
Run Code Online (Sandbox Code Playgroud)
但可以获得所有用户信息(图片、显示名称、名字、姓氏、生日...)
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |