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
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
.
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
.
Il suffit de mettre http://127.0.0.1:xxxx/ comme URL de rappel, où xxxx est le port de votre infrastructure
URL de rappel modifiée
http://localhost:8585/logintwitter.aspx
Convertir en
http://127.0.0.1:8585/logintwitter.aspx
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!
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.
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:
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:
télécharger et installer ampps
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.
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é.
Cela peut être fait très facilement avec Fiddler :
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.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).
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.
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
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.
é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; }
}
Voici les étapes qui ont fonctionné pour que Facebook fonctionne avec une application locale sur mon ordinateur portable:
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.
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"
php.ini
Le fichier _ est sur votre ordinateur en exécutant php --ini
dans votre CLIdé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