2012-02-10 54 views
1

我想申請一個身份驗證令牌: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

回答

1

服務器使用什麼協議?它不是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