Estoy creando una aplicación Python que necesita comunicarse con un proveedor de servicios OAuth. El SP requiere que especifique una URL de devolución de llamada. Especificar localhost obviamente no funcionará. No puedo configurar un servidor público. ¿Alguna idea además de pagar por servidor/hosting? ¿Esto es posible?¿Cómo me desarrollo contra OAuth localmente?
Respuesta
Esto puede ayudarle a:
http://www.marcworrell.com/article-2990-en.html
Es php por lo que debe ser bastante sencillo de configurar en su servidor prog.
He intentado una vez éste:
Es bastante simple. Tienes un enlace para descargar el código en la parte inferior.
dos cosas: Proveedor de servicios
El OAuth en cuestión infringe la especificación OAuth si le está dando un error si no se especifica una URL de devolución de llamada. callback_url es spec'd to be an OPTIONAL parameter.
Pero, aparte de la pedantería, es probable que desee obtener una devolución de llamada cuando el usuario haya terminado para que sepa que puede canjear el token de solicitud de un token de acceso. Yahoo's FireEagle developer docs tienen mucha información excelente sobre cómo hacer esto.
Incluso en el segundo caso, la URL de devolución de llamada en realidad no tiene que ser visible desde Internet en absoluto. El proveedor de servicios de OAuth redirigirá el navegador que usa el usuario para proporcionar su nombre de usuario/contraseña a la URL de devolución de llamada.
Las dos formas más comunes de hacer esto son:
- Crear un servicio web muda desde su aplicación que escucha en un puerto (por ejemplo, http://localhost:1234/) para la devolución de llamada de finalización, o
- Registrar un protocolo manejador (deberá verificar con la documentación de su sistema operativo específicamente sobre cómo hacer tal cosa, pero permite cosas como < a href = "skype: 555-1212" > para trabajar).
(Un ejemplo del flujo que yo creo que está describiendo lives here.)
Se puede crear 2 aplicaciones? 1 para el despliegue y el otro para la prueba.
Alternativamente, también puede incluir un parámetro oauth_callback cuando solicita un token de solicitud. Algunos proveedores redirigirán a la URL especificada por oauth_callback (por ejemplo, Twitter, Google), pero algunos ignorarán esta url de devolución de llamada y redirigirán a la especificada durante la configuración (p. Ej.Yahoo)
Esto fue con Facebook OAuth - De hecho, fue capaz de especificar 'http://127.0.0.1:8080' como la URL del sitio y la URL de devolución de llamada. Pasaron varios minutos antes de que los cambios en la aplicación de Facebook se propagaran, pero luego funcionó.
En caso de que utilice * Sistema estilo nix, crear un alias como 127.0.0.1 mywebsite.dev
en /etc/hosts
(es necesario tener la línea que es similar a la mencionada en el archivo, utilice http://website.dev/callbackurl/for/app
de devolución de llamada URL y durante la prueba local.
Windows también tiene un archivo de hosts. En Windows 7 está en 'C: \ Windows \ System32 \ drivers \ etc \ hosts' –
Entonces, cómo resolví este problema (usando la interfaz OAuth de BitBucket) fue especificando la URL de devolución de llamada a localhost (o lo que realmente quieras), y luego siguiendo la URL de autorización con curl, pero con el giro de solo devolver el HTTP Encabezado Ejemplo:
curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null
Inserción para sus credenciales y la url de autorización (¡recuerde escapar del signo de exclamación!).
Lo que debe conseguir es algo como esto:
200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN
Y se puede raspar la oath_verifier de esta.
Hacer lo mismo en Python:
import pycurl
devnull = open('/dev/null', 'w')
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION, devnull.write)
c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD")
c.setopt(pycurl.URL, authorize_url)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.perform()
print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)
Espero que esto sea útil para alguien!
La advertencia con esto (al menos con BitBucket), es que tendrá que visitar la URL para hacer clic en aceptar al menos inicialmente. Y luego creo que recuerda tus credenciales. –
- 1. ¿Cómo puedo hacer que Yahoo OAuth funcione cuando me desarrollo localmente cuando mi dominio local no está registrado con Yahoo?
- 2. ¿Cómo protejo mis claves privadas cuando uso github, heroku y me desarrollo localmente?
- 3. ¿Cómo me puedo conectar a Google usando oauth con Ruby?
- 4. ¿Cómo me protejo contra ajax-spam en PHP?
- 5. Desarrollo Java ME (J2ME): NetBeans vs Eclipse
- 6. almacena imágenes localmente para desarrollo s3 para producción Rails Paperclip
- 7. Cómo probar wsdl localmente
- 8. ¿Cómo me conecto al servidor IMAP de Gmail usando oauth en Rails3?
- 9. ¿Cómo me conecto a la API de Google Calendar sin la autenticación oAuth?
- 10. ¿Cómo usar Incompatibilidades Indecibles localmente?
- 11. Probando Google Maps API localmente
- 12. ¿Cómo instalar la extensión PHP localmente en WAMP?
- 13. OAuth prueba servidor/aplicación
- 14. Oauth: cómo probar con las URL locales?
- 15. ¿Cómo me autentico contra Active Directory del código del servicio web ASP.NET?
- 16. doctest funciones definidas localmente
- 17. ¿Cómo usar RestSharp con OAuth?
- 18. Desactivar localmente el relleno
- 19. Windows Live Id OAuth con entorno de desarrollo en C# .net
- 20. localmente único identificador
- 21. Socket.IO sólo funciona localmente
- 22. Modelo de usuario Django Oauth
- 23. ¿Cómo se puede usar activemq no localmente?
- 24. cómo usar hoogle localmente (como ctags)?
- 25. ¿Cómo ejecutar ASP.NET C# aplicación web localmente?
- 26. ¿Cómo luchas contra la complejidad del diseño?
- 27. Acceso ADP - Por/¿Contra?
- 28. ¿Cómo me pueden ayudar los conceptos matemáticos en el desarrollo web?
- 29. ¿Cómo comienzo a usar mi repositorio localmente y en Github?
- 30. Codeigniter. Implementando oAuth
De hecho. 'localhost' no funcionará, pero' 127.0.0.1' lo hará. –