通过asp.net Microsoft.Owin.Security.OAuth获取访问令牌

时间:2015-08-06 09:14:39

标签: c# asp.net oauth

根据以下参考资料..,

我在下面的代码中创建了access_token。

var ticket = new AuthenticationTicket(identity, props);
OAuthGrantResourceOwnerCredentialsContext.Validated(ticket);

但不幸的是,这个Validated(ticket)方法不会返回自动生成的access_token。

我想得到的就像下面的代码。

string _access_token = OAuthGrantResourceOwnerCredentialsContext.Validated(ticket);
System.out.println("Access_token ="+_access_token);

请让我接受你的建议。

1 个答案:

答案 0 :(得分:0)

您必须重写OAuthAuthorizationServerProvider类的方法 TokenEndpointResponse ,并获取上下文的属性 AccessToken

public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
{
    public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
    {
        var token = context.AccessToken;
        return base.TokenEndpointResponse(context);
    }
}

当然,您必须致电自定义提供商

static Startup()
{
    OAuthOptions = new OAuthAuthorizationServerOptions
    {
        TokenEndpointPath = new PathString("/Token"),
        Provider = new ApplicationOAuthProvider(),
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60),
        AllowInsecureHttp = true,
        RefreshTokenProvider = new ApplicationRefreshTokenProvider(),
    };
}