2011-03-21 26 views
19

Estoy tratando de implementar un proveedor de OAuth en Rails 3. Cuando intento autorizar una aplicación cliente obtengo este error. Estoy usando el plugin RESTful auth y pelles OAuth-plugin. Cuando estaba probando a través de la consola de Rails y obteniendo este error, pensé que simplemente necesitaba codificar las URL, pero recibí el mismo error al probar en el navegador, por lo que no estoy seguro de cuál es el problema.URI :: InvalidURIError (URI incorrecto (¿no es URI?):):

Respuesta

75

me metía en problemas con URI.split (volviendo este error), no sé si esto le ayuda, pero voy a publicar aquí algunas advertencias para también otra persona que tenga este error:

  1. Compruebe su URL no es nada, y es válido.
  2. No URI.encode(url) antes URI.parse (para evitar caracteres especiales)
  3. Haz strip a la cadena que se pasa a URI.parse (para evitar espacios en blanco iniciales y finales).

Todo en uno:

uri = URI.parse(URI.encode(url.strip)) 

recurso relacionado: http://www.practicalguile.com/2007/09/15/raising-uriinvalidurierror-from-a-perfectly-valid-uri/

+0

Hacer que todavía no me ayudan a dividir el URL arriba. Algún consejo sobre eso? Pude encontrar una pista sobre el uso de los mezcladores de partes de uri personalizadas aquí: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html#comment-726255789, pero yo ' No estoy seguro de qué anular para mi problema (los parámetros de consulta tienen caracteres no aceptados por 'URI.split'). – thekingoftruth

+0

De hecho, creo que voy a usar simplemente 'regex original para lo que tengo que hacer. 'URI.split' parece ser un analizador incompleto de rfc3986, por lo que podría ser mejor evitarlo y ahorrar algunos dolores de cabeza. – thekingoftruth

+0

¿dónde colocarías esto? en el controlador de búsqueda, por ejemplo, o en un archivo de configuración? ¡Gracias! –

0

probar esto:

safeurl = URI.encode(url.strip) 
response = RestClient.get(safeurl) 
+4

¿Puede agregar detalles en su respuesta, por favor? – Zulu

3

También puede utilizar esta alternativa URI joya: https://github.com/sporkmonger/addressable

Hay yo s no hay problemas con eso.

Muy nativa, sólo tiene que añadir espacio de nombres en el código después de instalar la gema

Addressable::URI