2010-05-30 12 views
7

Próbuję uwierzytelnienia Twitter działa na mojej witrynie ASP.NET. Kiedy tworzysz aplikację na stronie Twitter, musisz podać URL wywołania zwrotnego, który dla zachowania argumentu ustawiłem na http://mydomain.comParametr Twitter oauth_callback jest ignorowany!

Przeczytałem specyfikację oAuth 1.0a i nadpisałem ten adres zwrotny URL Twój własny, niestandardowy, musisz wysłać parametr oauth_callback w fazie request_token (oczywiście zakodowany przez URL).

Więc moja prośba URL wygląda następująco:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

Podobno, jeśli wszystko pójdzie zgodnie z planem, w danych odpowiedzi, ci mają otrzymać nowy parametr oauth_callback_confirmed = true w dodatek do token i tajne parametry tokena.

Jednak moja odpowiedź przychodzi poprzez jako: oauth_token = MYTOKEN & oauth_token_secret = MYTOKENSECRET

wiem, że nie dały wy największą ilość iść dalej, ale jestem na mój rozum jak do końca dlaczego nie otrzymuję parametru oauth_callback_confirmed. Bez tego moja aplikacja domyślnie powraca do adresu URL wywołania zwrotnego zakodowanego na stronie internetowej Twittera. Proszę, jeśli ktokolwiek mógłby mi pomóc, będę wiecznie wdzięczny!

Dzięki, A.

+0

ja dodano znacznik twitterapi. – amelvin

Odpowiedz

0

ja używałem this guide skonfigurować mój komputer do wykorzystania jako miejsce zwrotnego. Zasadniczo konfigurujesz plik hosts w określony sposób, czyścisz pamięć podręczną i dodajesz kilka wartości rejestru Firefox. Na końcu, gdy debugujesz wywołanie oauth, przekierowanie wraca na twój lokalny komputer.

Jak powiedziałem, zadziałało to dla mnie.

8

Czytałem spec OAuth 1.0a oraz przesłonić to callback URL z własnym jednego niestandardowego trzeba wysłać parametr oauth_callback w fazie request_token (url zakodowany z oczywiście) .

Więc moja prośba URL wygląda następująco:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

tylko dlatego czytasz spec nie oznacza, że ​​Twitter ją przeczytać. : P

żartowanie - jest to zasadniczo poprawne - ale sposób w jaki twitter lubi otrzymywać te dane jest nieco inny (i nie jest dobrze udokumentowany).

sposób, w jaki znalazłem, aby oauth_callback potwierdzić, jest następujący: określ parametr oauth_callback w parametrach funkcji żądania, NIE w adresie URL.

przykład python (używając OAuth2):

''' Create our client.''' 

client = oauth.Client(consumer) 

''' do the request ''' 

resp, content = client.request(request_token_url,"POST",body=urllib.urlencode({'oauth_callback':callbackURL})) 


''' note that it's called "body" in this particular OAuth function for Client but in OAuth Request object it's called "parameters." YMMV depending on programming language/ library of course. ''' 

Jest to również jedyny sposób udało mi się uzyskać OAuth weryfikatora powrotem.podobno nie trzeba podawać adresu URL wywołania zwrotnego za każdym razem, ponieważ udostępniamy go w ustawieniach aplikacji ... ale doświadczenie wydaje się wskazywać inaczej.

na koniec, pamiętaj, że na etapie 3 musisz zrobić to samo PONOWNIE - tym razem włączając oauth_verifier, jak również URL wywołania zwrotnego w parametrach.

mam nadzieję, że to pomaga - nie można zacząć mówić, ile wysiłku włożyłem w ustalenie tego.

powodzenia!

J

1
<?php 
    // oauth-php example 
    $token = OAuthRequester::requestRequestToken(
       $consumer_key, 
       $user_id, 
       array('oauth_callback'=> urlencode($callback_uri)) 
      ); 
?> 
Powiązane problemy