2015-12-11 2 views
0

У меня есть приложение, которое работает ежедневно и работает в течение нескольких месяцев. Он использовал twitter4j v3.0.3.401 Ошибка аутентификации при получении

Несколько недель назад, он начал бросать общее 401 исключения:

401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the system clock is in sync. 
{"request":"\/1.1\/statuses\/user_timeline.json","error":"Not authorized."} 

Relevant discussions can be found on the Internet at: 
    http://www.google.co.jp/search?q=4be80492 or 
    http://www.google.co.jp/search?q=0a6306df 
TwitterException{exceptionCode=[4be80492-0a6306df], statusCode=401, message=null, code=-1, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=112, limit=180, resetTimeInSeconds=1448156737, secondsUntilReset=428}, version=4.0.4} 
    at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:164) 
    at twitter4j.HttpClientBase.request(HttpClientBase.java:57) 

Я обновлен до v4.0.4 (последней на момент написания) & подтвердил правильность всех доступа и клиентские лексем. Я также попытался создать совершенно новое приложение и использовать эти жетоны. Я синхронизировал свои системные часы. Все безрезультатно.

Мой источник:

val config = new ConfigurationBuilder() 
    .setOAuthConsumerKey(conf.getString("twitter.api.key")) 
    .setOAuthConsumerSecret(conf.getString("twitter.api.secret")) 
    .setOAuthAccessToken(conf.getString("twitter.access.token")) 
    .setOAuthAccessTokenSecret(conf.getString("twitter.access.secret")) 
    .build() 

val twitter = new TwitterFactory(config).getInstance 

def statuses(handle: String, since: Long): Stream[Status] = { 
    @tailrec 
    def loop(page: Int, acc: Stream[Status]): Stream[Status] = { 
    val paging = new Paging(page, since) 
    val xs = twitter.getUserTimeline(handle, paging).iterator().asScala.toSeq 
    val stream = Stream.concat(acc, xs.filterNot(_.getText.startsWith("@")).filterNot(_.getText.startsWith("RT ")).toStream) 
    if (xs.size < 20) stream 
    else loop(page + 1, stream) 
    } 
    loop(1, Stream.empty) 
} 

Он терпит неудачу в twitter.getUserTimeline.

Почему это произошло, если ничего не изменилось в коде, в конфиге или в моей учетной записи Twitter?

Я исключил ключи & синхронизация часов. Чему еще я могу заглянуть?

Весь проект доступен для тестирования по адресу https://github.com/Synesso/tweet-mail (ему требуется некоторая настройка в соответствии с readme, но настройка smtp, вероятно, не требуется).

+1

Возможно, вам понадобится новая версия 'catcert.pem', например https://github.com/jublonet/codebird-php/blob/develop/src/cacert.pem, которая содержит последние данные сертификата из Twitter. –

+0

Я добавил сертификат доверия https://dev.twitter.com/overview/api/ssl _ Сертифицированный сертификат Symantec Class 3 Secure Server CA - G4 с последовательным интерфейсом: 51: 3f: b9: 74: 38: 70: b7: 34 : 40: 41: 8d: 30: 93: 06: 99: ff_ в мою систему, но все равно не удается. Есть ли способ, которым я могу доверять только этому приложению, через twitter4j api? – Synesso

+0

Мне нужно было добавить его в JRE cacerts. Спасибо Теренсу. – Synesso

ответ

2

(Преобразование моего комментария в ответ.)

Для того, чтобы безопасно подключаться к Twitter, вам потребуется версия уточненного из cacert.pem

Вы можете найти это в https://github.com/jublonet/codebird-php/blob/develop/src/cacert.pem - который содержит самый последний сертификат, который позволит вам подключиться к Twitter.

Вы можете найти подробную информацию о сертификате Твиттера на https://dev.twitter.com/overview/api/ssl

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

+1

Официальный источник для cacert: https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&actp=CROSSLINK&id=INFO2045 – Synesso

+0

Официальный источник последней версии cacert: http: //curl.haxx. се/документы/caextract.html – Jublo

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