Ale*_*lex 2 oauth-2.0 asp.net-core-mvc google-oauth2
在Visual Studio 2017RC中,我创建了具有单个用户帐户的ASP.NET Core MVC应用程序并成功完成了https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins教程以附加Google认证.我现在通过我的Google帐户登录了.
我所做的就是在自动生成的代码中添加几行(在Startup.cs的Configure方法中):
app.UseGoogleAuthentication(new GoogleOptions
{
ClientId = "xxxx.apps.googleusercontent.com",
ClientSecret = "xxxx",
Scope = { "email", "openid" }
});
Run Code Online (Sandbox Code Playgroud)
我现在需要获取由Google发布的访问令牌的价值(并由应用程序存储在cookie中).然后,我将使用它来生成XOAuth2密钥以访问Google服务.例如,在HomeController的About方法(由标准向导自动生成)中,我想显示收件箱中未读电子邮件的数量.使用XOAuth2密钥,我可以登录我的Gmail并从此处继续操作.
我怎样才能得到这个令牌? - 在通过Google初始登录时,是否需要在数据库中存储访问令牌?如果是这样,任何线索如何在标准向导生成的ASP.NET Core MVC应用程序中完成此操作? - 或者,也许我总是可以从cookie中读取访问令牌?如果是这样,怎么样?
最好是,我从cookie中读取它(无论如何),避免在数据库中复制这些信息,但不确定这种方法是否可行(即是否可以解密).
我曾经为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"
});
Run Code Online (Sandbox Code Playgroud)
然后我可以在AccountController.ExternalLoginCallback中获取访问令牌
var token = info.AuthenticationTokens.Single(x => x.Name == "access_token").Value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3637 次 |
| 最近记录: |