Oauth 2.0 OAUTH2(OPENID连接)和#x2B;MVC5。刷新令牌问题

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项目中有一个与此相关

我正在寻找关于使用OWIN libs获取
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,类似url
http://localhost:49244/Home/DriveAsync86747631
。搞不懂这是什么。我绝对不能把它传给google MirrorApi for.net。有什么想法吗?我正在保存状态参数(请参阅),在所有OAuth 2.0流完成后返回的URL。我在URL的末尾添加了一些随机数(请参阅),因为我想确定是我启动了OAuth 2.0流,而不是其他人。我找到了答案。刚刚补充说<代码>属性.字典.添加(新的KeyValuePair(“访问类型”,“脱机”)进入
executesult
方法的
ChallengeResult
类。我知道这可能太晚了,但请看下面的帖子: