Не удалось проверить подпись и токен oauth - выпуск JavaScript - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь получить токен доступа, следуя URL

https://api.twitter.com/oauth/request_token?
oauth_consumer_key=vRtqh0KONqxr1C2knqv2A&
oauth_nonce=0afa694efd3feee68ebc180f3858a9a3&
oauth_signature=QgHBQ8OLBrjgwivzIfe4p9eBtaQ%3D&
oauth_signature_method=HMAC-SHA1&
oauth_timestamp=1328989636&
oauth_version=1.0

Но ошибка "Не удалось проверить подпись и токен oauth" . Что не так с этим URL?

Ответы [ 2 ]

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

Правильно ли настроено ваше системное время ???????

0 голосов
/ 04 сентября 2013

Одна из причин, по которой мы получаем эту ошибку «Не удалось проверить подпись и токен OAuth», - неправильное системное время. Поскольку запрос OAuth содержит параметры системной метки времени, когда время устройства не превышает 5 минут времени сервера Twitter, мы получаем «Не удалось проверить подпись и токен OAuth».

Если это причина, и вы хотите, чтобы она работала, если системное время также не верно, то есть два способа заставить его работать:

  1. Сделайте HTTP HEAD-запрос к конечной точке на api.twitter.com - вы получите HTTP-заголовок Date в ответе, который указывает текущее время, понятное Twitter. Затем вы конвертируете это в время эпохи и скорректируете ваши значения oauth_timestamp на определенное смещение.

  2. Есть небольшая библиотека iOS ios-ntp . Используйте это, чтобы получить точное текущее время.

    После этого установите метку времени объекта OAuth в следующем методе

    - (GTMOAuthAuthentication *)authForTwitter {
    
        GTMOAuthAuthentication *auth = [[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1
                    consumerKey:TWITTER_CONSUMER_KEY
                    privateKey:TWITTER_CONSUMER_SECRET];
        [auth setServiceProvider:@"Twitter"];     
        NSDate * currentdate = //GET ACCURATE DATE HERE ;            
        [auth setTimestamp:[NSString stringWithFormat:@"%f",[currentdate timeIntervalSince1970]]];
        return auth;
    }
    

Вот и все ... Удачного кодирования:)

...