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解析响应时有问题,但我看不出为什么。
服务器使用什么协议?它不是OAuth 1.0,但是您在DotNetOpenAuth中使用OAuth 1.0类。 OAuth 1.0 mandates表示响应格式为application/x-www-form-urlencoded
,但在响应代码片段中显然是用JSON代替。
另外,我从来没有在任何规范中看到过urlToSendUserTo
参数,我不知道为什么要发送一个空的oauth_token
作为请求中的额外参数。
看起来你和/或服务器在讲非常不同的语言。
服务器声称使用OAuth 1.0a(https://www.dialawg.com/api/#nav=view%3DapiIntro)。可以省略空的oauth_token(正如您发布的链接底部所述)。我已经尝试过,没有它。 – 2012-02-12 02:35:43
@CoreyDownie我建议你通过电子邮件发送这些dialawg人,并询问他们为什么要向你发送JSON响应。这绝对不符合OAuth 1.0a标准。 – 2012-02-12 15:35:14
我会把它与他们一起,谢谢安德鲁。 – 2012-02-13 01:37:12
检查发送和接收的MIME类型。看起来响应是'json/text',但是你的'WebConsumer'可能期望别的东西。您的WebConsumer在“accept”标头中发送了什么? – Diego 2012-02-10 19:59:44
请求中似乎没有任何接受标头。 – 2012-02-10 20:41:07