DotNetOpenAuth预期的IProtocolMessage消息

时间:2012-02-10 19:52:31

标签: .net dotnetopenauth

我正在尝试请求身份验证令牌:

public static void RequestAuthorization(WebConsumer consumer)
{
    var extraParams = new Dictionary<string, string> { 
        { "oauth_token", string.Empty},
        { "oauth_callback", "http://www.ihighfive.com/" },
    };

    var req = consumer.PrepareRequestUserAuthorization(callback, extraParams, null);    
    consumer.Channel.Send(req);
}

问题是,当我运行.PrepareRequestUserAuthorization()时出现以下错误

  

预期的IProtocolMessage消息但收不到可识别的消息   消息。

用Fiddler检查请求/响应,我可以看到响应返回(值为obfusticated):

{ "oauth_token" : "this-is-the-oauth-token", 
"oauth_token_secret" : "this-is-the-oauth-secret-token", 
"oauth_callback_confirmed" : true, 
"urlToSendUserTo" : "http://blah.blah.com/api/OAuthAuthorizeToken.aspx?oauth_token=token-value-is-really-long"}

对我而言,这似乎是一个很好的回应。如果我访问urlToSendUserTo,它可以工作,然后将我传递给我的初始回调网址。所以我猜DNOA在解析响应方面遇到了问题,但我看不出原因。

1 个答案:

答案 0 :(得分:1)

服务器使用什么协议?它不是OAuth 1.0,但您在DotNetOpenAuth中使用OAuth 1.0类。 OAuth 1.0 mandates响应采用application/x-www-form-urlencoded格式,但在您的回复片段中显然是JSON。

此外,我从未在任何规范中看到urlToSendUserTo参数,我不知道为什么您在请求中发送空oauth_token作为额外参数。

您和/或服务器似乎说的是非常不同的语言。