«Проверка не удалась - клиентское приложение не может быть пустым» с использованием oauth-plugin и mongoid - PullRequest
0 голосов
/ 18 февраля 2011

Я новичок в Rails3 и Ruby в целом, но у меня может возникнуть проблема с самим плагином Ruby oauth.Я пытаюсь использовать потребительскую часть логики для авторизации моего веб-приложения с учетной записью пользователя в Twitter.Все настроено так, что я перенаправлен в Twitter для авторизации, но когда пользователь перенаправляется обратно в мое приложение, я получаю сообщение об ошибке при сохранении токена в базе данных MongoDB:

Mongoid::Errors::Validations in Oauth consumersController#callback 
Validation failed - Client application can't be blank.

После просмотра кода инфраструктуры я вижу, что класс Token ожидает, что client_application_id будет иметь значение, но я не думал, что токен потребителя должен быть связан с моделью ClientApplication?

обратите внимание, что я использую последнюю ветвь oauth-plugin, которая включает исправления 3en для mongoid, и единственный способ заставить модели работать - это использовать 'referenced_in' вместо 'embedded_in'.Что я тут не так делаю?

Заранее спасибо,

Роб

Трассировка приложения:

app/models/consumer_token.rb:25:in `find_or_create_from_access_token'  
app/controllers/oauth_consumers_controller.rb:16:in `callback'

Частичная полная трассировка:

vendor/ruby/1.8/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb: 234:in `fail_validate!'  
vendor/ruby/1.8/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb: 75:in `save!'  
vendor/ruby/1.8/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:90:in `create!'  
vendor/ruby/1.8/gems/simple_oauth-0.1.4/lib/simple_oauth/core_ext/object.rb:6:in `tap'  
vendor/ruby/1.8/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:89:in `create!'  
app/models/consumer_token.rb:25:in `find_or_create_from_access_token' 
vendor/ruby/1.8/bundler/gems/oauth-plugin-f805e8c359b1/lib/oauth/models/consumers/token.rb:38:in `find_or_create_from_request_token'  
vendor/ruby/1.8/bundler/gems/oauth-plugin-f805e8c359b1/lib/oauth/controllers/consumer_controller.rb:35:in `callback'  
app/controllers/oauth_consumers_controller.rb:16:in `callback'``

1 Ответ

1 голос
/ 04 марта 2011

Оказывается, я неправильно следовал документам.Мой класс User неправильно ссылался на неправильный класс oauth.Начиная с нуля с установкой исправил мою проблему.

...