ОШИБКА в Twitterizer.OAuthUtility.GetRequestToken () "Значение не может быть нулевым. Имя параметра: строка" - PullRequest
1 голос
/ 31 октября 2011

Вот строка, где я получаю эту ошибку:

var requestToken = OAuthUtility.GetRequestToken(
    _consumerKey, 
    _consumerSecret, 
    "http://mysite.com/Twitter/GetToken");

_consumerKey и _consumerSecret имеют правильные значения.

Трассировка стека:

[ArgumentNullException: Valueне может быть нулевым.Имя параметра: String] System.Number.StringToNumber (String, ул NumberStyles варианты, NumberBuffer и номер, NumberFormatInfo информация, Boolean parseDecimal) +9585854 System.Number.ParseInt32 (String с, NumberStyles стиль, NumberFormatInfo данные) +119 Twitterizer.TwitterizerException.ParseRateLimitHeaders(Ответ WebResponse) в C: \ Projects \ twitterizer-132 \ Twitterizer2 \ Exceptions \ TwitterizerException.cs: 200 Twitterizer.TwitterizerException..ctor (Строковое сообщение, исключение innerException) в C: \ Projects \ twitterizer-132 \ Twitterizer2 \ Exceptions \TwitterizerException.cs: 98 Twitterizer.OAuthUtility.GetRequestToken (String consumerKey, String consumerSecret, String callbackAddress) в C: \ Projects \ twitterizer-132 \ Twitterizer2 \ OAuth \ OAuthUtility.cs: 95 Brace.Twitter.Tweeting.GetRequestToken (): \ PROJECTS \ Brace \ v1 \ Brace.Twitter \ Tweeting.cs: 18 Brace.Controllers.TwitterController.GetToken (Строка oauth_token, Строка oauth_verifier) ​​в D: \ PROJECTS \ Brace \ v1 \ Brace \ Controllers \ TwitterController.cs:ламыbda_method (Closure, ControllerBase, Object []) +157 System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) +208 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary)параметры) +27 System.Web.Mvc. <> c_ DisplayClass15.b _12 () +55 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (фильтр IActionFilter, фильтры предварительного действия ActionExecutingContext, фильтры Func 1 continuation) +263 System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1,ActionDescriptor actionDescriptor, IDictionary 2 parameters) +191 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 System.Web.Mvc.Controller.ExecuteCore() +116 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass8 1.b__7 (IAsyncResult ) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End () +62 System.Web.Mvc. <> C _DisplayClasse.b_ d () +50 System.Web.Mvc.SecurityUtil.b _0 (действие f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (действие Action) +22 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +60 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +8963149 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный в синхронном режиме) + 184

1 Ответ

1 голос
/ 31 октября 2011

Вот моя лучшая попытка быть слишком расплывчатой: эта ошибка на самом деле является признаком другой проблемы.

Скорее всего, ваше приложение (не ваше собственное приложение, а регистрация в Twitter, которая дала вам консольный токен) не настроено как веб-приложение. Их форма вводит в заблуждение: она не делает URL-адрес обратного вызова обязательным при выборе веб-приложения, но на самом деле это необходимо. Когда вы сохраняете свое приложение без URL-адреса обратного вызова, оно фактически сохраняет его как настольное приложение.

Проблема с настольным приложением заключается в том, что вы не можете использовать обратные ссылки. В веб-приложениях может использоваться аутентификация на основе выводов, но в приложениях для настольных компьютеров не может использоваться аутентификация на основе веб-интерфейса. (Я уверен, что есть вполне веская причина.)

Итак, твиттер отклоняет ваш запрос на получение токена запроса, потому что вы также предоставляете обратный вызов.

Фактическое исключение заключается в том, что Twitterizer все еще ищет информацию об ограничении скорости, которая включена в каждый (ну, хорошо, почти каждый) ответ, даже из запросов, которые не были выполнены.

Я (наконец) исправлю эту проблему, но она не решит вашу настоящую проблему.

...