Oauth 2.0 OAUTH2(OPENID连接)和#x2B;MVC5。刷新令牌问题
我正在寻找关于使用OWIN libs获取Oauth 2.0 OAUTH2(OPENID连接)和#x2B;MVC5。刷新令牌问题,oauth-2.0,asp.net-mvc-5,google-glass,owin,google-api-dotnet-client,Oauth 2.0,Asp.net Mvc 5,Google Glass,Owin,Google Api Dotnet Client,我正在寻找关于使用OWIN libs获取refresh\u令牌的有用建议 我关注这篇文章 所有的东西都很甜。但是没有办法,至少我不知道如何检索refresh\u令牌 我试着在初始请求中添加“离线访问”,但没有任何用处。我肯定做错了什么 我为什么需要它我正在尝试链接googleglass+MVC5+OWIN的功能 p、 如果您能链接到使用Google.Api.Auth构建的工作示例,我将不胜感激 谢谢。看看下面的博客帖子: 您可以在中找到一个工作示例代码。是的,在Katana项目中有一个与此相关
refresh\u令牌
的有用建议
我关注这篇文章
所有的东西都很甜。但是没有办法,至少我不知道如何检索refresh\u令牌
我试着在初始请求中添加“离线访问”,但没有任何用处。我肯定做错了什么
我为什么需要它我正在尝试链接googleglass+MVC5+OWIN
的功能
p、 如果您能链接到使用Google.Api.Auth构建的工作示例,我将不胜感激
谢谢。看看下面的博客帖子:
您可以在中找到一个工作示例代码。是的,在Katana项目中有一个与此相关的开放问题:
简而言之,它需要更简单。您可以使用这样的代码
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET",
AccessType = "offline",
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = (context) =>
{
TimeSpan expiryDuration = context.ExpiresIn ?? new TimeSpan();
context.Identity.AddClaim(new Claim("urn:tokens:google:email", context.Email));
context.Identity.AddClaim(new Claim("urn:tokens:google:url", context.GivenName));
if (!String.IsNullOrEmpty(context.RefreshToken))
{
context.Identity.AddClaim(new Claim("urn:tokens:google:refreshtoken", context.RefreshToken));
}
context.Identity.AddClaim(new Claim("urn:tokens:google:accesstoken", context.AccessToken));
context.Identity.AddClaim(new Claim("urn:tokens:google:accesstokenexpiry", DateTime.Now.Add(expiryDuration).ToString()));
return Task.FromResult(0);
}
}
});
谢谢,有用的链接。不幸的是,我已经按照评论中的建议尝试了。没有任何改变,也尝试了3.0-alpha-没有运气。对于像katana owin这样的大框架感到有点失望,没有明显的事情,比如以简单灵活的方式检索密钥。谢谢,好帖子。一个问题:我无法理解将数据存储作为文件存储的设计思想。例如,你知道EF的实现吗?正如你在博客中略微提到的那样?我下一步的任务之一是实现EF。请记住,这是一个开源项目,因此,如果您找到了一个好的解决方案,请告诉我,我很乐意查看一下,并将其添加到存储库中。现在,我决定只为.NET4.0、WP和WinRT实现最基本的功能。我为那本书开了一期新刊——我明白了,谢谢。我尝试了您的示例,但仍然坚持获取
访问/刷新令牌
。例如,我可以看到FileDataStore,类似urlhttp://localhost:49244/Home/DriveAsync86747631
。搞不懂这是什么。我绝对不能把它传给google MirrorApi for.net。有什么想法吗?我正在保存状态参数(请参阅),在所有OAuth 2.0流完成后返回的URL。我在URL的末尾添加了一些随机数(请参阅),因为我想确定是我启动了OAuth 2.0流,而不是其他人。我找到了答案。刚刚补充说<代码>属性.字典.添加(新的KeyValuePair(“访问类型”,“脱机”)进入executesult
方法的ChallengeResult
类。我知道这可能太晚了,但请看下面的帖子: