DotNetOpenAuth RequestUserAuthorization обратный вызов - PullRequest
2 голосов
/ 09 февраля 2012

Я пытаюсь получить токен авторизации пользователя со следующим:

public static void RequestAuthorization(WebConsumer consumer)
{
    if (consumer == null) throw new ArgumentNullException("consumer");

    Uri callback = new Uri("http://www.ihighfive.com/"); //test url until app is external

    var extraParams = new Dictionary<string, string> { 
        //need to pass this as extra, but leave the value blank
        { "oauth_token", string.Empty} 
    };

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

Но я получаю обратно ошибку:

{ "error": { "message" : "oauth_callback is required",  "isFriendly" : false} }

Если я изменю приведенный выше код и вручную включу параметр oauth_callback, я получу более благоприятные результаты

var extraParams = new Dictionary<string, string> { 
    //need to pass this as extra, but leave the value blank
    { "oauth_token", string.Empty},
    { "oauth_callback", "http://www.ihighfive.com/" },
};

Таким образом, передача аргумента обратного вызова в .PrepareRequestUserAuthorization (), по-видимому, не включает oauth_callback в запрос. Я как-то неправильно использую параметр обратного вызова?

- изменить -

Дальнейшие исследования показывают, что параметр oauth_callback не включается, если для ServiceProviderDescription установлено значение ProtocolVersion.V10. Если для него установлено значение ProtocolVersion.V10a или оно не задано совсем, в запрос включается oauth_callback.

1 Ответ

3 голосов
/ 16 февраля 2012

Если ваш вопрос «почему oauth_callback не включается автоматически», ответом будет ваше дальнейшее расследование.Это новый параметр, добавленный в OAuth 1.0a, поэтому, когда вы устанавливаете версию на 1.0, этот параметр опускается.

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