example - Twitter oAuth callbackUrl-desarrollo localhost
twitter sdk (16)
Así es como lo hice:
URL de devolución de llamada registrada: 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>
Asegúrese de establecer la propiedad ''usar puertos dinámicos'' de su proyecto en ''falso'' e ingresar un número de puerto estático en su lugar. (Yo usé 1066).
¡Espero que esto ayude!
¿Alguien más está teniendo dificultades para obtener la URL de devolución de llamada de Twitters oAuth para llegar a su entorno de desarrollo de host local? Aparentemente ha sido desactivado recientemente. http://code.google.com/p/twitter-api/issues/detail?id=534#c1
¿Alguien tiene una solución alternativa? Realmente no quiero detener mi desarrollo
Cuando desarrollo localmente, siempre configuro un nombre de desarrollador alo alojado localmente que refleja el proyecto en el que estoy trabajando. Configuré esto en xampp a través de xampp / apache / conf / extra / httpd-vhosts.conf y luego también en / Windows / System32 / drivers / etc / hosts.
Entonces, si estoy configurando un sitio de desarrollo local para example.com, lo configuraría como example.dev en esos dos archivos.
Respuesta corta: una vez que esté configurado correctamente, puede tratar esta url ( http://example.dev ) como si fuera en vivo (en lugar de local) mientras configura su aplicación de Twitter.
Se dio una respuesta similar aquí: https://dev.twitter.com/discussions/5749
Cita directa (énfasis agregado):
Puede proporcionar cualquier URL válida con un nombre de dominio que reconozcamos en la página de detalles de la aplicación. OAuth 1.0a requiere que envíe un valor oauth_callback en el paso del token de solicitud del flujo y aceptaremos una devolución de llamada dinámica basada en el host local en ese paso .
Esto funcionó como un encanto para mí. Espero que esto ayude.
Estaba trabajando con la URL de devolución de llamada de Twitter en mi servidor local. Si no está seguro de cómo crear un host virtual (esto es importante) use Ampps. Él es realmente genial y fácil. En unos pocos pasos, tienes tu propio host virtual y luego cada url funcionará en él. Por ejemplo:
descargar e instalar ampps
Agregar nuevo dominio (aquí puede establecer, por ejemplo, twitter.local) que significa que su host virtual será http: //twitter.local y funcionará después del paso 3.
Estoy trabajando en Win así que ve a tu archivo de host -> C: / Windows / System32 / Drivers / etc / hosts y agrega la línea: 127.0.0.1 twitter.local
Reinicie sus Ampps y puede usar su devolución de llamada. Puede especificar cualquier URL, incluso si está utilizando algún framework MVC o tiene htaccess url rewrite.
¡Espero que esto ayude! Aclamaciones.
Estos son los pasos que funcionó para que Facebook trabaje con una aplicación local en mi computadora portátil:
- apuntar a apps.twitter.com
- ingrese el nombre, la descripción de la aplicación y la URL de su sitio Nota: para localhost: 8000, use 127.0.0.1:8000 ya que el anterior no funcionará
- ingrese la URL de devolución de llamada que coincida con su URL de devolución de llamada definida en TWITTER_REDIRECT_URI su aplicación Nota: por ej., http://127.0.0.1/login/twitter/callback (el http://127.0.0.1/login/twitter/callback local no funcionará).
- Importante: ingrese las URL de "política de privacidad" y "términos de uso" si desea solicitar la dirección de correo electrónico del usuario.
- Verifique la casilla de aceptar de términos
- haga clic en [Crear su aplicación de Twitter]
- cambie a la pestaña [Keys and Access Tokens] en la parte superior
- copie la "Clave de consumidor (Clave de API)" y "Secreto de consumidor (Secreto de API)" en TWITTER_KEY y TWITTER_SECRET en su aplicación
- haga clic en la pestaña "Permisos" y configúrelo apropiadamente como "solo lectura", "lectura y escritura" o "lectura, escritura y mensaje directo" (use la opción menos intrusiva necesaria para su aplicación, para solo y el inicio de sesión de OAuth "solo lectura" es suficiente
- En "Permisos adicionales", marque la casilla "solicitar direcciones de correo electrónico de los usuarios" si desea que se devuelva la dirección de correo electrónico del usuario a los datos de inicio de sesión de OAuth (en la mayoría de los casos, marque sí).
Luché con esto y seguí una docena de soluciones, al final todo lo que tuve que hacer para trabajar con cualquier aplicación apis en el host local fue:
Ir a descargar: archivo cacert.pem
En php.ini
* un-comment y cambio: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"
- Puede encontrar dónde está su archivo
php.ini
en su máquina ejecutandophp --ini
en su CLI - Puse mi cacert.pem en el mismo directorio que php.ini para facilitar.
Parece que Twitter ahora permite localhost
junto con lo que sea que tengas en la configuración de Callback URL
, siempre que haya un valor allí.
Sí, se deshabilitó debido al reciente problema de seguridad que se encontró en OAuth. La única solución por el momento es crear dos aplicaciones OAuth, una para producción y otra para desarrollo. En la aplicación de desarrollo, configura su URL de devolución de llamada de localhost en lugar de la en vivo.
Se puede hacer de manera muy conveniente con Fiddler :
- Abre el menú Herramientas> HOSTS ...
- Inserte una línea como
127.0.0.1 your-production-domain.com
, asegúrese de que "Habilitar reasignación de solicitudes ..." esté marcado. No te olvides de presionar Guardar . - Si se necesita acceso a su servidor de producción real, simplemente salga de Fiddler o deshabilite la reasignación.
- Al iniciar Fiddler nuevamente se activará la reasignación (si está marcada).
Una ventaja agradable es que puede especificar un puerto personalizado, como este: 127.0.0.1:3000 your-production-domain.com
(sería imposible lograr esto a través del archivo hosts). Además, en lugar de IP, puede usar cualquier nombre de dominio (por ejemplo, localhost
).
De esta manera, es posible (pero no necesario) registrar su aplicación de Twitter solo una vez (siempre que no le importe usar las mismas claves para el desarrollo y la producción local).
Simplemente ponga http://127.0.0.1:xxxx/ como la url de devolución de llamada, donde xxxx es el puerto para su marco
Solo tuve que hacer esto la semana pasada. Aparentemente localhost
no funciona, pero 127.0.0.1
sí figura.
Por supuesto, esto supone que está registrando dos aplicaciones con Twitter, una para su sitio en vivo www.mysite.com
y otra para 127.0.0.1
.
Tuve el mismo desafío y no pude darle a localhost una URL de devolución de llamada válida. Así que creé un dominio simple para ayudarnos a los desarrolladores: https://tolocalhost.com
Redirigirá cualquier ruta a su dominio y puerto localhost que necesite. Espero que pueda ser de utilidad para otros desarrolladores.
URL de devolución de llamada editada
http://localhost:8585/logintwitter.aspx
Convertir a
http://127.0.0.1:8585/logintwitter.aspx
Lo que hace es una asociación de DNS simple a 127.0.0.1 que le permite omitir los filtros en localhost o 127.0.0.1:
smackaho.st. 28800 IN A 127.0.0.1
Entonces, si hace clic en el enlace, le mostrará lo que tiene en su servidor web local (y si no tiene uno, obtendrá un 404). Por supuesto, puede configurarlo en cualquier página / puerto que desee:
edite esta función en TwitterAPIExchange.php en la línea # 180
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; }
}
establecer callbackurl en la aplicación de Twitter: 127.0.0.1:3000 y establecer WEBrick para enlazar en 127.0.0.1 en lugar de 0.0.0.0
comando: rails s -b 127.0.0.1
Alternativa 1.
Configure su archivo .hosts (Windows) o etc / hosts para apuntar un dominio en vivo a su IP de host local. como:
127.0.0.1 xyz.com
donde xyz.com es tu dominio real.
Alternativa 2.
Además, el artículo da la sugerencia de utilizar alternativamente un servicio de acortador de URL. Acorte su URL local y proporcione el resultado como devolución de llamada.
Alternativa 3.
Además, parece que funciona para proporcionar, por ejemplo, http://127.0.0.1:8080
como devolución de llamada a Twitter, en lugar de http://localhost:8080
.