gpt4 book ai didi

oauth-2.0 - 如何在 ASP.NET Core MVC OAuth 2.0 中获取访问 token 的值

转载 作者:行者123 更新时间:2023-12-03 01:39:31 24 4
gpt4 key购买 nike

在 Visual Studio 2017RC 中,我使用个人用户帐户创建了 ASP.NET Core MVC 应用程序并成功完成 https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins附加 Google 身份验证的教程。我现在已通过我的 Google 帐户登录。

我所做的就是向自动生成的代码添加几行(在 Startup.cs 的配置方法中):

app.UseGoogleAuthentication(new GoogleOptions
{
ClientId = "xxxx.apps.googleusercontent.com",
ClientSecret = "xxxx",
Scope = { "email", "openid" }
});

我现在需要获取由 Google 颁发的访问 token 的值(并由应用程序存储在 cookie 中)。然后我将使用它生成 XOAuth2 key 以访问 Google 服务。例如,在 HomeController 的 About 方法(由标准向导自动生成)中,我想显示收件箱中未读电子邮件的数量。使用 XOAuth2 key ,我可以登录 Gmail 并从这里继续。

我怎样才能得到这个 token ?- 在通过 Google 初始登录期间,我是否需要将访问 token 存储在数据库中?如果是这样,有什么线索可以在标准向导生成的 ASP.NET Core MVC 应用程序中完成此操作吗?- 或者,也许我总是可以从 cookie 中读取访问 token ?如果是这样,怎么办?

最好,我从 cookies 中读取它(它无论如何都在那里),并避免在数据库中复制此信息,但不确定这种方法是否可行(即是否可以解密)。

我曾经为 ASP.NET MVC 做过一次,但在 ASP.NET Core MVC 中事情发生了很大变化,遗留代码不再有用。

最佳答案

好的,找到了。 SaveTokens 属性可以解决这个问题。

app.UseGoogleAuthentication(new GoogleOptions
{
ClientId = "xxxx.apps.googleusercontent.com",
ClientSecret = "xxxx",
Scope = { "email", "openid" },
SaveTokens = true,
AccessType = "offline"
});

然后我可以在 AccountController.ExternalLoginCallback 中获取访问 token

var token = info.AuthenticationTokens.Single(x => x.Name == "access_token").Value;

关于oauth-2.0 - 如何在 ASP.NET Core MVC OAuth 2.0 中获取访问 token 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524213/

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