2010-09-07 5 views
5

Développement d'une application Web que j'ai enregistrée avec Twitter. Dans cette application, je pourrais avoir 10 différentes identités Twitter que je veux autoriser ou refuser l'accès à l'application.Avec l'autorisation de Twitter oAuth, comment spécifiez-vous quel nom d'utilisateur twitter?

Par exemple:

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/

Il a toujours quelques défauts à ce que mon compte Twitter est connecté en tant et je dois préciser Déconnexion, puis vous connecter avec un nouveau compte. Son presque comme si je besoin d'un paramètre querystring supplémentaire, comme

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/& ForUsername = billgates

Répondre

1

Notez que dans le cadre général de l'autorisation, le mandataire ne connaît pas nécessairement l'identité de l'utilisateur au nom de ça agit. En d'autres termes, il pourrait y avoir une implémentation où votre application peut être autorisée à lire le flux Twitter des mises à jour, tout en ne sachant toujours pas à quelle identité appartient ce flux. L'ajout du paramètre que vous demandez correspond à la divulgation d'informations dans ce cas, car votre application aura besoin d'une information que le système est conçu pour ne pas fournir.

Ou pour le mettre dans un exemple réel - imaginez un service de voiturier, où au lieu de vous donner un ticket de stationnement et de prendre les clés de la voiture, le voiturier vous demandera votre SSN juste pour garer la voiture, juste parce que le voiturier gare des voitures pour d'autres personnes aussi.

+0

J'essayais de comprendre comment obtenir la connexion hors de la session en cliquant sur la page Autoriser. Il semble que ce n'est pas techniquement possible. Merci pour l'explication. – Shane

+0

Une fois votre application autorisée, vous pouvez très probablement obtenir l'identité de l'API Twitter. Ainsi, vous pouvez garder l'assoiciation des jetons d'autorisation et des identités. Vous ne pouvez pas demander d'autorisation pour une identité spécifique. –

+0

C'est ce que j'ai fini par faire. J'ai une table dans laquelle je stocke le jeton de demande au cours de l'autorisation, puis lors du rappel, je le fais correspondre via ce jeton de demande. Donc, je vais connaître l'utilisateur. Merci encore. – Shane

3

En fait, vous pouvez passer un paramètre supplémentaire avec l'URL de rappel, comme ceci:

https://api.twitter.com/oauth/authorize?oauth_token=XXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates 

et le paramètre sera renvoyé à vous lorsque Twitter appelle l'URL de retour, comme ceci:

http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates&oauth_token=XXX&access_token=YYY 

Vous pouvez en lire plus à ce sujet dans la documentation - http://dev.twitter.com/pages/auth:

Utilisez toujours un oauth_callback explicite - Il est recommandé de spécifier un rappel par défaut OAuth dans votre client dossier, mais déclarer explicitement votre oauth_callback sur chaque demande de jeton FETCH votre application fait. En réglant dynamiquement votre oauth_callback, vous pouvez transmettre informations d'état supplémentaires retour à votre application et contrôler l'expérience mieux.