2010-07-03 3 views
0

Je travaille avec une API tierce. Ce serveur est censé renvoyer à mon URL.Obtenir un ActionController :: InvalidAuthenticityToken pour mon XML

Mon URL est:

http://www.mydomain.com/teleku/playvoice.xml 

Le contrôleur a une certaine logique, mais contient essentiellement un respond_to ne bloque et la vue correspondante est un constructeur xml très basique.

Cependant, je reçois l'erreur suivante dans les journaux:

ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityToken): haml (2.2.17) [v] lib/SASS/plugin/rails.rb: 19: dans process_without_compass' compass (0.8.17) [v] lib/compass/app_integration/rails/action_controller.rb:7:in processus '

+0

Pouvez-vous montrer la requête POST que vous faites à votre url? –

+0

Salut ... hmmm ... Je ne suis pas sûr que je peux - il vient d'une demande d'un tiers ... laissez-moi voir la documentation de teleku ..... merci! – Angela

Répondre

3

Pour désactiver cette vérification ajouter à votre contrôleur:

protect_from_forgery :except => [:your_method_name] 
0

OK. C'est ce que je pouvais comprendre:

explication Exemple:

http://www.teleku.com/examples#highlowruby

de l'exemple thats GIST fournis par Teleku:

http://gist.github.com/raw/317657/38cd329895c79bd49e91304a6fe7cb1f88e02065/HighLow%20Ruby%20Sinatra%20Teleku%20PhoneML%20Voice%20Applications

On dirait qu'il n'y a pas de jeton auth Champs obligatoires. Donc, vous pouvez utiliser boucle pour tester,

curl --data-urlencode "callerinput=lower" http://highlow.heroku.com/guess/10 où je suppose que 10 et je parie plus bas que le nombre sélectionné au hasard par le concessionnaire. Cela fonctionne. Mais si vous voulez le faire fonctionner dans votre application, vous devez aussi encoder le jeton d'authenticité dans l'url. Par exemple, si la même application avait protect_from_forgery activé, il serait:

curl --data-urlencode "callerinput=lower&authenticity_token=blahblahblah" http://highlow.heroku.com/guess/10"

Questions connexes