我一直关注DotNetOpenAuth库中的Oauth Provider示例。到目前为止,一切都很顺利,已经在两个不同的站点中实现了消费者和提供者。
但是,我被困在了一点上。我想返回通常存在于HttpContext.Current.User.Identity.Name中的userName以及AuthorizedTokenResponse的额外数据。 (这类似于twitter在其OAuth响应中添加“screen_name”的方式)else if ((requestAccessToken = request as AuthorizedTokenRequest) != null)
{
string userName = context.User.Identity.Name; // how do you tie this to the logged on user? I am soooo stupid.
AuthorizedTokenResponse response = _oAuthServiceProvider.PrepareAccessTokenMessage(requestAccessToken);
response.ExtraData.Add("screen_name", userName);
_oAuthServiceProvider.Channel.Send(response);
}
因此,在这种情况下,HttpHandler中的HttpContext.Current.User.Identity.Name为null。 (我基本上从dotnetopenAuth OAuth示例中调整了HTTPHandler。)
所以我不确定我是否在这里丢失了这个情节,但我对于如何获得经过身份验证的用户名称感到很遗憾。如果它有帮助,那么用户肯定是先前登录的,并且用户在TokenManager的AuthorizeRequestToken方法中设置(我的是在内存中)。
那么,在我发回AuthorizedTokenResponse之前,有没有办法使用存储在AuthorizeRequestToken方法中的DotNetOpenAuth获取用户名?