2010-10-21 4 views
3

J'ai codé contre un Delphi EXE (application de bureau win32) pour accéder à Twitter et faire certaines fonctions. Il utilisait l'authentification de base avec la limitation de l'API. Je sais que je dois convertir cela en OAuth. J'ai lu la documentation essayant de déterminer la meilleure approche. Je comprends que la meilleure méthode est le navigateur Web avec une URL de rappel. Je sais aussi que Twitter inclut une méthode d'authentification basée sur Pin (oob). Je pensais que c'était la voie à suivre avec cette application, mais je veux m'assurer que ce n'est pas transparent. Cela nécessite que l'utilisateur se rende à l'extérieur de l'application et obtienne un numéro d'identification. Il n'est pas aussi sécurisé car le jeton d'accès renvoyé n'expire jamais. J'utilise des composants Indy v10 pour faire les opérations GET/POST, donc je me demande s'il y a un moyen de le faire en les utilisant et en étant capable de faire un rappel et de ne pas utiliser la méthode d'authentification Pin.Twitter OAUTH et une application de bureau Win32 EXE

Quelqu'un peut-il m'aider?

J'ai aussi essayé de faire travailler la classe Twitter de Chuck Beasley en Delphi 7 avec Indy v10 et j'ai eu des problèmes. IdObjs et Idsys n'existent plus. Est-ce que quelqu'un a eu cette classe pour travailler avec mon scénario? Merci, David

Répondre

4

OAuth est une norme utilisée pour les applications Web, son texte est libéralement jonché du mot «agent», ce qui signifie un navigateur. La meilleure solution à mon humble avis est, si possible, d'avoir réellement une URL de rappel, ce qui signifie que vous avez votre propre site qui fournit le service pour sauvegarder la fonctionnalité de votre application. Il y a des services qui rendent cela possible pour des tiers déjà, comme JanRain. Si ces options ne sont pas réalisables (ce qui signifie que vous ne pouvez pas fournir un vrai site WWW pour l'URL de rappel), alors votre seule option est en effet l'authentification hors bande, oob. Ne pensez même pas à ce que l'authentification OAuth rappelle l'application qui écoute sur un port, ce qui est complètement douteux pour 1) la grande majorité des applications seront assises derrière un périphérique NAT (routeur, proxy sortant) qui les rendra inaccessibles l'OAuth prvider et 2) le pare-feu de l'OS bloquera vos appels entrants.

+4

Vous n'avez pas besoin d'exécuter votre propre site Web pour utiliser l'URL de rappel d'OAuth. Tout ce que cela fait est de dire à OAuth quelle URL rediriger l'agent/le navigateur vers quand l'authentification se termine. TIdHTTP a un événement OnRedirect qui peut être utilisé pour intercepter cette redirection. OU, définissez simplement la propriété HandleRedirects sur False et gérez les URL de redirection manuellement. Dans le code original de Chuck, il utilise un composant TEmbeddedWB pour gérer la partie UI de l'authentification (entrer les informations d'identification et accorder l'autorisation), puis intercepter la redirection de rappel pour que le reste du code puisse utiliser les jetons auth. –

+0

@Remy: Je pense que tu as raison. Je pensais en termes d'OpenID, où la découverte de domaine de partie de confiance exigeant un site Web. Mais OAuth fonctionne différemment, en fonction de la paire clé secrète/clé publique de l'application et ne nécessite pas que Twitter «appelle» votre domaine. –

+1

Il existe déjà un ticket de fonctionnalité ouvert dans les suivis de problèmes d'Indy pour l'ajout d'un support OAuth natif à une future version. –

1

Dans le même temps , La classe Twitter de Beasly a été étendue/mise à jour; voir the latest incarnation

J'ai commencé une bibliothèque qui utilise Synapse pour accéder à Twitter. Il peut utiliser l'authentification OOB/PIN et le jeton/secret oauth prédéfini. Il peut être étendu pour utiliser l'authentification par navigateur. Actuellement écrit en utilisant FPC mais devrait être facilement adaptable à Delphi. FPCTwit code