我一直在关注 DotNetOpenAuth 库中的 Oauth Provider 示例。到目前为止一切都很好,已经在两个不同的站点中实现了消费者和提供者。
不过,我被困在一点点上。我想返回通常存在于 HttpContext.Current.User.Identity.Name 中的用户名以及 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);
}
所以在这种情况下 HttpContext.Current.User.Identity.Name 在 HttpHandler 中为空。(我基本上已经从 dotnetopenAuth OAuth 示例中改编了 HTTPHandler。)
所以我不确定我是否在这里失去了情节,但我不知道如何获得经过身份验证的用户名。如果有帮助,那么用户肯定是以前登录过的,并且用户是在 TokenManager 的 AuthorizeRequestToken 方法中设置的(我的在内存中)。
那么,在我发回 AuthorizedTokenResponse 之前,有什么方法可以使用存储在 AuthorizeRequestToken 方法中的 DotNetOpenAuth 获取用户名?