DotNetOpenAuth预计IProtocolMessage消息

问题描述:

我想申请一个身份验证令牌:DotNetOpenAuth预计IProtocolMessage消息

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消息,但收到没有可识别的 消息。

检查与小提琴手的请求/响应,我可以看到,响应返回(值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,它会起作用,然后将我传递给我的初始回调URL。所以我想DNOA解析响应时有问题,但我看不出为什么。

+0

检查发送和接收的MIME类型。看起来响应是'json/text',但是你的'WebConsumer'可能期望别的东西。您的WebConsumer在“accept”标头中发送了什么? – Diego 2012-02-10 19:59:44

+0

请求中似乎没有任何接受标头。 – 2012-02-10 20:41:07

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

另外,我从来没有在任何规范中看到过urlToSendUserTo参数,我不知道为什么要发送一个空的oauth_token作为请求中的额外参数。

看起来你和/或服务器在讲非常不同的语言。

+0

服务器声称使用OAuth 1.0a(https://www.dialawg.com/api/#nav=view%3DapiIntro)。可以省略空的oauth_token(正如您发布的链接底部所述)。我已经尝试过,没有它。 – 2012-02-12 02:35:43

+0

@CoreyDownie我建议你通过电子邮件发送这些dialawg人,并询问他们为什么要向你发送JSON响应。这绝对不符合OAuth 1.0a标准。 – 2012-02-12 15:35:14

+0

我会把它与他们一起,谢谢安德鲁。 – 2012-02-13 01:37:12