DotNetOpenAuth Ожидаемое сообщение IProtocolMessage - PullRequest
1 голос
/ 10 февраля 2012

Я пытаюсь запросить токен аутентификации:

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, я вижу, что ответ возвращается (значения обфусцированы):

{ "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 возникли проблемы с анализом ответа, но я не понимаю, почему.

1 Ответ

1 голос
/ 12 февраля 2012

Какой протокол использует сервер?Это не OAuth 1.0, но вы используете классы OAuth 1.0 в DotNetOpenAuth. OAuth 1.0 требует , чтобы ответ был в формате application/x-www-form-urlencoded, но в вашем фрагменте ответа он явно указан в формате JSON.

Кроме того, я никогда не видел параметр urlToSendUserTo вникаких спецификаций, и я не знаю, почему вы отправляете пустой oauth_token в качестве дополнительного параметра в запросе.

Кажется, что вы и / или сервер говорите на очень разных языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...