2011-03-21 5 views
19

J'essaye d'implémenter un fournisseur d'OAuth dans Rails 3. Quand j'essaye d'autoriser une application de client j'obtiens cette erreur. J'utilise le plugin auth RESTful et pelles OAuth-plugin. Lorsque je testais via la console Rails et obtenais cette erreur, j'ai pensé que j'avais simplement besoin d'encoder les URL mais j'ai la même erreur lors des tests dans le navigateur, donc je ne suis pas sûr de ce qui ne va pas.URI :: InvalidURIError (mauvais URI (n'est pas URI?):):

Répondre

75

J'ai eu des ennuis avec URI.split (retour cette erreur), je ne sais pas si cela vous aide, mais je vais poster ici quelques avertissements pour aussi quelqu'un d'autre ayant cette erreur:

  1. Vérifiez votre URL n'est pas nul, et c'est un valide.
  2. Ne URI.encode(url) avant URI.parse (pour éviter des caractères spéciaux)
  3. Est-ce strip à la chaîne que vous passez à URI.parse (pour éviter les espaces blancs avant et arrière).

Tout en un:

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

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

+0

Faire cela encore ne m'a pas aidé diviser le haut url. Des conseils à ce sujet? J'ai été capable de trouver un indice sur l'utilisation de l'outil de recherche de pièces personnalisées de l'URI ici: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html#comment-726255789, mais Je ne sais pas quoi remplacer pour mon problème (les paramètres de requête ont des caractères non acceptés par 'URI.split'). – thekingoftruth

+0

En fait, je pense que je vais utiliser un simple 'regex' pour ce que je dois faire, en fait. 'URI.split' semble être un analyseur incomplet de rfc3986, il vaut donc peut-être mieux le contourner et sauver des maux de tête. – thekingoftruth

+0

où placeriez-vous cela? dans le contrôleur de recherche par exemple ou dans un fichier de configuration? Merci! –

0

essayez ceci:

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

Pouvez-vous ajouter des détails dans votre réponse s'il vous plaît? – Zulu

3

Vous pouvez également utiliser ce petit bijou URI alternative: https://github.com/sporkmonger/addressable

Il je s pas de tels problèmes avec cela.

ajouter Très natif, tout espace de noms dans votre code après avoir installé le petit bijou

Addressable::URI