2016-05-10 85 views
5
tweepy.error.TweepError: [{u'message': u'Invalid or expired token.', u'code': 89}] 

Czy tokeny muszą być zakodowane? Posiadam teraz kody OAuth i tokeny dostępu, ale token wydaje się wygasać co 24 godziny. Co mogę zrobić, aby programowo odnowić token? Czy mogę uzyskać nowy token za pośrednictwem aplikacji Tweepy?Nieprawidłowy lub wygasły token. Zażądaj nowego tokena za pośrednictwem Tweepy?

Celem mojego skryptu jest uruchamianie go codziennie bez mojej zgody. Mam to ustawione jako cronjob. Nie chcę robić żadnego ręcznego wpisu.

Używam tylko interfejsu API na jednym koncie, moje konto. Mam więc nazwę użytkownika/hasło, itp.

Zwykle otrzymuję token z kliknięcia "Utwórz mój token dostępu", a następnie, gdy sprawdzę kilka dni później, token zniknie, a przycisk do utworzenia go -Zjawia się ponownie.

enter image description here

Po regeneracji i użyciu go na inny dzień, to się jeszcze raz! Zrzut ekranu: http://i.imgur.com/hhDqLnU.png

+0

Śledzi w swoich OAuth FAQ, że nie tracą ważności tokenów auth. –

+0

@KlausD. Wiem, czy to nie dziwne? Token znika po jednym lub dwóch dniach użycia. Zrobiło mi to 3 razy. Nie wierzę, że mówią prawdę. Jak w ogóle mogę sobie z tym poradzić? Nie rozumiem, jak ich stwierdzenie może być prawdziwe, gdy tylko losowo przestaje działać? – User

+0

Jak zdobyć token? –

Odpowiedz

2

Nie wiem, czego celem aplikacji jest, ale aby odpowiedzieć na niektóre pytania-problemy:

Czy tokeny muszą być ciężko kodowane?

Nie, w zależności od charakteru aplikacji jesteś kodowania, można żądać tych danych po wykonaniu programu za pośrednictwem formularza internetowego lub tekstowym w GUI lub umieścić go w innym pliku i szyfruje je lub importować plik jest ona i używać go ...

mam OAuth i tokenów dostępu ciężko kodowane w tej chwili, ale token wydaje się wygasać co 24 godziny. Co mogę zrobić, aby programowo odnowić token ?

Nie można uzyskać klucza API i tajnego klienta, należy to zrobić ręcznie. Informacje te powinny być trwałe, oparte na https://dev.twitter.com/oauth/overview

dostępie Reklamowe jest inna historia, można użyć interfejsu API do żądania jednego widocznie: https://dev.twitter.com/oauth/reference/post/oauth/access_token

POST oauth/request_token Pozwala aplikacji konsumentów do uzyskania Token żądania OAuth, aby poprosić o autoryzację użytkownika. Ta metoda spełnia Sekcja 6.1 przepływu uwierzytelniania OAuth 1.0. Jest bardzo zalecane użycie HTTPS do wszystkich kroków autoryzacji OAuth. Wykorzystanie Uwaga: tylko wartości ASCII są akceptowane na oauth_nonce

URL zasobu https://api.twitter.com/oauth/request_token

dotyczących dostępu tokena wygaśnięcia:

Jak długo trwa token dostępu trwać? Obecnie nie tracimy dostępu do tokenów o wartości . Twój token dostępu będzie nieważny, jeśli użytkownik jednoznacznie odrzuci swoją aplikację ze swoich ustawień lub jeśli administrator Twittera zawiesza Twoją aplikację pod kątem .Jeśli twoja aplikacja zostanie zawieszona, na twojej stronie aplikacji pojawi się uwaga z informacją, że została ona zawieszona. jako na twitter:

Co mam zrobić, jeśli dostęp do tokenu dostępu stał się nieważny? Należy zaplanować, że token dostępu użytkownika może stać się nieważny w dowolnym momencie, a użytkownik będzie musiał ponownie autoryzować tego użytkownika w przypadku, w którym token go posiada. Sprawdzenie, czy użytkownik radzi sobie z tą sytuacją z wdziękiem, jest niezbędne dla jakości użytkownika o jakości .

Według dokumentacji Twitters https://dev.twitter.com/oauth/application-only

żądanie API zawiera nieprawidłowe okaziciela żeton Użycie niewłaściwego lub odwołane okaziciela żeton, aby wnioski API spowoduje:

HTTP/1.1 401 Unauthorized Content-Type : application/json; charset = UTF-8 Content-Length: 61 ...

{ "błędów": [{ "message": "Nieprawidłowy lub wygasł żeton", "kodu": 89}]}

Może to wymaga rozwiązania na stronie twitterów? Sugerowałbym skontaktowanie się z nimi directyl https://dev.twitter.com/solutions/customer-service

+0

. Czy dostęp do interfejsu API wymaga wprowadzenia danych przez użytkownika co 24 godziny? 'za pośrednictwem formularza internetowego lub pola tekstowego w GUI'. Zauważyłem, że powiedziałeś coś o zaszyfrowaniu i zaimportowaniu pliku, co może oznaczać, że nie potrzebuję danych wejściowych od użytkownika? – User

+0

można to znaleźć tutaj: http://stackoverflow.com/questions/7014953/i-need-to-securely-store-a-username-and-password-in-python-what-are-my-options may you może opisać rodzaj aplikacji, którą kodujesz, aby móc korzystać z niej w przyszłości. i Nie, dostęp APi nie wymaga wprowadzania danych przez użytkownika co 24 godziny. znowu, zależy od twoich potrzeb – glls

+0

również, jeśli możesz dostarczyć próbki kodu z tego, co próbujesz osiągnąć, i jak otrzymujesz błąd za pomocą tweepy to byłoby pomocne – glls

0

Możesz uzyskać token dostępu za pomocą kodu poniżej. Użyłem configparser do przechowywania mojej konfiguracji. Gdy masz token, to nie wygasa.

if not config['APP']['AUTH_SECRET'] or not config['APP']['AUTH_TOKEN']: 
    try: 
     redirect_url = auth.get_authorization_url() 
     print redirect_url 
    except tweepy.TweepError: 
     print 'Error! Failed to get request token.' 

    # Example w/o callback (desktop) 
    # You even can start browser here 
    verifier = raw_input('Go to URL above, authorize and enter the code:') 

    try: 
     auth.get_access_token(verifier) 
    except tweepy.TweepError: 
     print 'Error! Failed to get access token.' 

    config['APP']['AUTH_SECRET'] = auth.access_token_secret 
    config['APP']['AUTH_TOKEN'] = auth.access_token 
    with open(CONFIG_FILE,'w') as configfile: 
     config.write(configfile) 
else: 
    auth.set_access_token(config['APP']['AUTH_TOKEN'], config['APP']['AUTH_SECRET']) 
+0

Wymaga ręcznego wpisania przez użytkownika, ale jest to cronjob pobierany o północy. – User

+0

Ręczne wprowadzanie danych wymagane jest tylko za pierwszym razem – andjelx