2010-05-30 5 views
7

J'essaie d'obtenir l'authentification Twitter sur mon site ASP.NET. Lorsque vous créez l'application sur le site Web Twitter, vous devez spécifier une URL de rappel, qui pour l'argument, je l'ai définie à http://mydomain.comTwitter Le paramètre oauth_callback est ignoré!

J'ai lu la spécification oAuth 1.0a, et de remplacer cette URL de rappel avec votre propre personnalisé, vous devez envoyer le paramètre oauth_callback dans la phase request_token (codé url bien sûr).

Donc, mon URL de requête ressemble à ceci:

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

Soi-disant, si tout va planifier, dans vos données de réponse, vous êtes censé recevoir un nouveau paramètre de oauth_callback_confirmed = true en plus de votre les paramètres secrets de jeton et de jeton.

Cependant, ma réponse transparaît comme: oauth_token = MYTOKEN & oauth_token_secret = MYTOKENSECRET

Je sais que je ne l'ai pas donné, vous les gars le plus grand nombre d'aller, mais je suis à la fin de mon esprit à pourquoi je ne reçois pas le paramètre oauth_callback_confirmed. Sans cela, mon application conserve par défaut l'URL de rappel codée en dur sur le site Web Twitter. S'il vous plaît, si quelqu'un pouvait m'aider, je serais éternellement reconnaissant!

Merci, A.

+0

J'ai ajouté un tag twitterapi. – amelvin

Répondre

0

J'ai utilisé this guide pour mettre en place mon PC à utiliser comme emplacement de rappel. Fondamentalement, vous configurez votre fichier hosts d'une certaine manière, effacez votre cache et ajoutez quelques valeurs de registre Firefox. À la fin, lorsque vous déboguez un appel oauth, la redirection revient à votre PC local.

Comme je l'ai dit, cela a fonctionné pour moi.

8

J'ai lu la spécification 1.0a OAuth, et remplacer cette URL de rappel avec votre propre d'une mesure que vous devez envoyer le paramètre oauth_callback dans la phase de request_token (codé url-de cours) .

Donc, mon URL de requête ressemble à ceci:

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

juste parce que vous lisez les spécifications ne signifie pas que TWITTER lire. : P

blague - c'est essentiellement correct - mais la façon dont twitter aime recevoir ces données est un peu différent (et pas bien documenté). La méthode que j'ai trouvée pour obtenir la confirmation oauth_callback est la suivante: spécifiez oauth_callback dans les paramètres de la fonction de requête, PAS dans l'URL.

exemple python (en utilisant 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. ''' 

c'est aussi la seule façon que j'ai réussi à obtenir un vérificateur oauth retour.soi-disant on ne devrait pas avoir à spécifier l'URL de rappel à chaque fois, puisque nous le fournissons dans les paramètres de l'application ... mais l'expérience semble indiquer le contraire. Enfin, sachez qu'à l'étape 3, vous devez faire la même chose ENCORE - cette fois en incluant le paramètre oauth_verifier ainsi que l'URL de rappel dans les paramètres.

espérons que cela aide - ne peut pas commencer à vous dire combien d'efforts je mets dans cette conclusion.

bonne chance!

J

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