2013-10-09 2 views
0

Я пытаюсь обновить старую программу ASP classic Twitter, которую моя работа в настоящее время использует для использования новой OAUTH. Я не программист ASP, но мне удалось найти библиотеку ASPTwitter, размещенную в Интернете Тимом Ачесоном по адресу http://www.timacheson.com/Blog/2013/jun/asptwitterОшибка библиотеки ASPTwitter при использовании специальных символов

Все работает, так как у нас есть собственный код для поиска нашей базы данных и передачи встроенной строки в код ASPTwitter для чириканья.

Загвоздка в том, что она не будет выполнена с сообщением об ошибке в

{"errors":[{"message":"Could not authenticate you","code":32}]} 

, если есть так много, как «» период в строке. Каждый возможный специальный символ, кроме букв и цифр, вызывает сбой.

У нас есть много сообщений, которые будут содержать различные символы, а также URL-адреса.

Я искал все и не смог найти решение. Комментарии на сайте Тима упоминали об этом, но решений пока нет. Все здесь были очень полезны, поэтому я надеялся, что у кого-то может быть решение.

Я не могу опубликовать код, так как есть около 6 файлов, и я не знаю, какая из них вызывает проблему.

Большое вам спасибо за помощь!

Edit:

Это блок файла 300+ линии где проблема происходит, я надеюсь, что причина может быть найдена здесь.

' Gets bearer token for application-only authentication from Twitter API 1.1. 
' Application-user authentication: https://dev.twitter.com/docs/auth/using-oauth 
' and: https://dev.twitter.com/docs/auth/authorizing-request 
' API endpoint statuses/update (post a tweet): https://dev.twitter.com/docs/api/1.1/post/statuses/update 
Private Function UpdateStatusJSON(sStatus) 

    Dim sURL : sURL = API_BASE_URL + "/1.1/statuses/update.json" 

    Dim oXmlHttp: Set oXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP") 

    oXmlHttp.open "POST", sURL, False 



    sStatus = "this is from the ASPTwitter dot asp file" 


    oXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded;charset=UTF-8" 
    oXmlHttp.setRequestHeader "User-Agent", "emiratesjobpost.com" 
    oXmlHttp.setRequestHeader "Authorization", "OAuth " & GetOAuthHeader(sURL, sStatus) 

    oXmlHttp.send "status=" & Server.URLEncode(sStatus) ' Encoded spaces as + in request body. 

    UpdateStatusJSON = oXmlHttp.responseText 

    Set oXmlHttp = Nothing 

    REM: A JSON viewer can be useful here: http://www.jsoneditoronline.org/ 
    ' To fix error message "Read-only application cannot POST" go to your application's "Application Type" settings at dev.twitter.com/apps and set "Access" to "Read and Write". 
    ' After changing access to read/write you must click the button to generate new auth tokens and then use those. 
    Response.Write "<textarea cols=""100"" rows=""3"" >" & UpdateStatusJSON & "</textarea>" : Response.Flush() 

End Function 

Если я заменил «точку» на «.» в строке «sStatus» он разбивается

+0

это сломаться, если вы используете 'oXmlHttp.send "статус =" & sStatus' вместо этого? т.е.: удаление urlencode? – SearchAndResQ

ответ

0

Используют ли ваши страницы кодировку UTF-8? Откройте их в «Блокноте», выберите «Сохранить как» в меню файла, и если выбрано ansi-кодирование, измените его на UTF-8.

Смотрите эту ссылку для более вещей, которые вы можете сделать

http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx

+0

Я надеялся, что это исправит проблему, но я убедился, что каждый asp-файл был UTF-8, и я все еще получаю эту проблему. Если я включаю период в сообщение, он сообщает, что он не может аутентифицироваться, вынимает период и сообщения. Я отредактировал первое сообщение, чтобы включить, по крайней мере, код, где происходит ошибка, что, я надеюсь, поможет. – kevincawleyjr

Смежные вопросы