web-dev-qa-db-fra.com

Twitter oAuth callbackUrl - développement localhost

Quelqu'un d'autre a-t-il de la difficulté à obtenir l'URL de rappel de Twitters oAuth pour accéder à leur environnement de développement localhost? Apparemment, il a été désactivé récemment. http://code.google.com/p/Twitter-api/issues/detail?id=534#c1

Quelqu'un at-il une solution de contournement? Je ne veux pas vraiment arrêter mon développement

109
Markus

Alternative 1.

Configurez votre fichier .hosts (Windows) ou etc/hosts pour qu'il pointe un domaine actif vers votre IP localhost. tel que:

127.0.0.1 xyz.com

où xyz.com est votre domaine réel.

Alternative 2.

En outre, l'article donne le conseil d'utiliser alternativement un service de raccourcisseur d'URL. Raccourcissez votre URL locale et fournissez le résultat sous forme de rappel.

Alternative 3.

De plus, il semble que cela fonctionne par exemple pour fournir http://127.0.0.1:8080 comme rappel à Twitter au lieu de http://localhost:8080.

133
Tony

Je n'avais qu'à faire cela la semaine dernière. Apparemment, localhost ne fonctionne pas mais 127.0.0.1 va comprendre.

Bien entendu, cela suppose que vous enregistriez deux applications avec Twitter, une pour votre live www.mysite.com et un autre pour 127.0.0.1.

27
Adam

Il suffit de mettre http://127.0.0.1:xxxx/ comme URL de rappel, où xxxx est le port de votre infrastructure

10
Zamith

URL de rappel modifiée

http://localhost:8585/logintwitter.aspx

Convertir en

http://127.0.0.1:8585/logintwitter.aspx
8
Hakkı Eser

Voici comment je l'ai fait:

URL de rappel enregistrée: http://127.0.0.1/Callback.aspx

   OAuthTokenResponse authorizationTokens = 
        OAuthUtility.GetRequestToken(ConfigSettings.getConsumerKey(), 
                                     ConfigSettings.getConsumerSecret(), 
                                     "http://127.0.0.1:1066/Twitter/Callback.aspx");

ConfigSettings:

public static class ConfigSettings
{
    public static String getConsumerKey()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    }

    public static String getConsumerSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    }

}

Web.config:

<appSettings>

    <add key="ConsumerKey" value="xxxxxxxxxxxxxxxxxxxx"/>
    <add key="ConsumerSecret" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>

</appSettings>

Assurez-vous que la propriété "utiliser les ports dynamiques" de votre projet est définie sur "false" et entrez plutôt un numéro de port statique. (J'ai utilisé 1066).

J'espère que ça aide!

7
ThdK

Oui, il a été désactivé en raison du problème de sécurité récent détecté dans OAuth. La seule solution pour l’instant est de créer deux OAuth applications - une pour la production et une pour le développement. Dans l’application de développement, vous définissez votre URL de rappel localhost au lieu de l’adresse active.

7
arikfr

Utilisez http://smackaho.st

Ce qu’il fait est une simple association DNS à 127.0.0.1 qui vous permet de contourner les filtres sur localhost ou 127.0.0.1:

smackaho.st. 28800 IN A 127.0.0.1

Donc, si vous cliquez sur le lien, il affichera ce que vous avez sur votre serveur Web local (et si vous n'en avez pas, vous obtiendrez un 404). Vous pouvez bien sûr l’adapter à la page/au port de votre choix:

http://smackaho.st:54878/Twitter/callback

7
Mob

Je travaillais avec l'URL de rappel Twitter sur mon localhost. Si vous ne savez pas comment créer un hôte virtuel (c'est important), utilisez Ampps. Il est vraiment cool et facile. En quelques étapes, vous avez votre propre hôte virtuel et chaque URL y travaillera. Par exemple:

  1. télécharger et installer ampps

  2. Ajouter un nouveau domaine. (Ici, vous pouvez définir par exemple Twitter.local) ce qui signifie que votre hôte virtuel sera http: //Twitter.local et cela fonctionnera après l'étape 3.

  3. Je travaille sur Win alors allez dans votre fichier hôte -> C:\Windows\System32\Drivers\etc\hosts et ajoutez la ligne: 127.0.0.1 Twitter.local

Redémarrez votre Ampps et vous pouvez utiliser votre rappel. Vous pouvez spécifier n'importe quelle URL, même si vous utilisez un framework MVC ou si vous avez réécrit htaccess url.

J'espère que cette aide! À votre santé.

5
Glibo

Cela peut être fait très facilement avec Fiddler :

  • Ouvrir le menu Outils> HOSTS ...
  • Insérer une ligne comme 127.0.0.1 your-production-domain.com, assurez-vous que "Activer le remappage des demandes ..." est coché. N'oubliez pas d'appuyer sur Save.
  • Si vous avez besoin d'accéder à votre véritable serveur de production, quittez simplement Fiddler ou désactivez le remappage.
  • Le redémarrage de Fiddler activera le remappage (s'il est coché).

Un bonus agréable est que vous pouvez spécifier un port personnalisé, comme ceci: 127.0.0.1:3000 your-production-domain.com _ (il serait impossible d'y parvenir via le fichier hosts). De plus, au lieu d’IP, vous pouvez utiliser n’importe quel nom de domaine (par exemple, localhost).

De cette façon, il est possible (mais pas nécessaire) d'enregistrer votre application Twitter une seule fois (à condition que cela ne vous dérange pas d'utiliser les mêmes clés pour le développement et la production locaux).

3
Roman Boiko

Lorsque je développe localement, je configure toujours un nom de développeur hébergé localement qui reflète le projet sur lequel je travaille. Je l'ai configuré dans xampp via xampp\Apache\conf\extra\httpd-vhosts.conf, puis dans\Windows\System32\drivers\etc\hosts.

Donc, si je configure un site de développement local pour example.com, je le configurerais en tant que example.dev dans ces deux fichiers.

Réponse courte: Une fois que cela est configuré correctement, vous pouvez simplement traiter cette URL ( http://example.dev ) comme si elle était en direct (plutôt que locale) lors de la configuration de votre application Twitter.

Une réponse similaire a été donnée ici: https://dev.Twitter.com/discussions/5749

Citation directe (soulignement ajouté):

Vous pouvez fournir n'importe quelle URL valide avec un nom de domaine que nous reconnaissons sur la page de détails de l'application. OAuth 1.0a vous oblige à envoyer une valeur oauth_callback à l'étape de jeton de requête du flux) et nous accepterons une dynamique basée sur locahost rappel sur cette étape.

Cela a fonctionné comme un charme pour moi. J'espère que cela t'aides.

3
Joe Bergevin

De nos jours, http://127.0.0.1 A également cessé de fonctionner. Une solution simple consiste à utiliser http://localtest.me Au lieu de http://localhost, Il pointe toujours vers 127.0.0.1. Vous pouvez même y ajouter n'importe quel sous-domaine arbitraire, et il indiquera toujours 127.0.0.1

Voir Site Web

2
Aron Einhorn

J'ai eu le même défi et je n'ai pas pu donner à localhost une URL de rappel valide. J'ai donc créé un domaine simple pour nous aider les développeurs: https://tolocalhost.com

Il redirigera tout chemin vers votre domaine localhost et le port dont vous avez besoin. J'espère que cela pourra être utile à d'autres développeurs.

2
Jørgen

éditez cette fonction sur TwitterAPIExchange.php à la ligne # 18

public function performRequest($return = true)
{
    if (!is_bool($return)) 
    { 
        throw new Exception('performRequest parameter must be true or false'); 
    }

    $header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');

    $getfield = $this->getGetfield();
    $postfields = $this->getPostfields();

    $options = array( 
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_HEADER => false,
        CURLOPT_URL => $this->url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false
    );

    if (!is_null($postfields))
    {
        $options[CURLOPT_POSTFIELDS] = $postfields;
    }
    else
    {
        if ($getfield !== '')
        {
            $options[CURLOPT_URL] .= $getfield;
        }
    }

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    if ($return) { return $json; }
}
2
Helper

Voici les étapes qui ont fonctionné pour que Facebook fonctionne avec une application locale sur mon ordinateur portable:

  • goto apps.Twitter.com
  • entrez le nom, la description de l'application et l'URL de votre site. Remarque: pour localhost: 8000, utilisez 127.0.0.1:8000 car l'ancien ne fonctionnera pas.
  • entrez l'URL de rappel correspondant à votre URL de rappel définie dans Twitter_REDIRECT_URI de votre application. Remarque: par exemple: http://127.0.0.1/login/Twitter/callback (localhost ne fonctionnera pas).
  • Important Entrez les URL "Règles de confidentialité" et "Conditions d'utilisation" si vous souhaitez demander l'adresse de messagerie de l'utilisateur.
  • cochez la case d'acceptation des termes
  • cliquez sur [Créer votre application Twitter]
  • passez à l'onglet [Clés et jetons] en haut
  • copiez la "clé de consommateur (clé API)" et le "secret de consommateur (secret d'API)" sur Twitter_KEY et Twitter_SECRET dans votre application
  • cliquez sur l'onglet "Autorisations" et définissez-le comme suit: "lecture seule", "lecture et écriture" ou "lecture, écriture et message direct" (utilisez l'option la moins intrusive nécessaire pour votre application, pour seulement et OAuth login "lecture seule" est suffisant
  • Sous "Autorisations supplémentaires", cochez la case "Demander les adresses électroniques des utilisateurs" si vous souhaitez que l'adresse électronique de l'utilisateur soit renvoyée aux OAuth données de connexion (dans la plupart des cas, cochez la case Oui)).
1
Kmeixner

On dirait que Twitter autorise maintenant localhost à côté de tout ce que vous avez dans le Callback URL paramètres, tant qu’il ya une valeur.

1
MrMakeIt

J'ai eu du mal avec cela et j'ai suivi une douzaine de solutions. Au final, tout ce que je devais faire pour travailler avec un apis SSL sur un hôte local était:

Allez télécharger: fichier cacert.pem

Dans php.ini * commenter et modifier: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • Vous pouvez trouver où votre php.ini Le fichier _ est sur votre ordinateur en exécutant php --ini dans votre CLI
  • J'ai placé mon cacert.pem dans le même répertoire que php.ini pour plus de facilité.
1
Lewis

définir callbackurl dans l'application Twitter: 127.0.0.1:3000 et définir WEBrick pour qu'il se lie sur 127.0.0.1 au lieu de 0.0.0.0

commande: Rails s -b 127.0.0.1

1
Alok Yadav