2011-02-01 1 views
1

У меня возникли проблемы при использовании xmpp4r сделать регистрацию в полосе следуя SO нить здесь:xmpp4r и Iq.new_register для внутриполосной регистрации

XMPP transport to another protocol

Проблема сводится к тому, что я получаю ошибка NoMethodError Исключение для new_register, когда я запускаю следующий код:

require "xmpp4r" 
require "xmpp4r/client" 
require "xmpp4r/iq" 

def in_band_reg 

    chat_name = 'testChatName' 
    password = 'pword' 

    reg = Jabber::Iq.new_register(chat_name, password) 

end 

NoMethodError Exception: undefined method `new_register' for Jabber::Iq:Class 

в xmpp4r драгоценный камень в файле iq.rb я могу видеть, метод new_register определяется как:

def Iq.new_register(username=nil, password=nil) 
     ... 
end 

но когда я исследую методы класса, я не могу увидеть метод new_register. И.Е.

Jabber::Iq.singleton_methods(false) 
["new_authset", "new_rosterget", "new_vcard", "new_rosterset", "import", "new_authset_digest", "new_query", "add_elementclass", "new_browseget"] 

Jabber::Iq.public_instance_methods(false) 
["query=", "queryns", "set_type", "type", "typed_add", "type=", "query", "vcard"] 

Jabber::Iq.respond_to?("new_register") 
false 

Любая идея, почему я не могу получить доступ к методу new_register в 'xmpp4r/iq'?

ответ

2

Я получил эту работу, просто закодировав ее сам. Сначала подключите клиент, который может в полосе регистрации новых пользователей:

jid = JID::new('[email protected]/res') 
client = Client::new(jid, false) 
client.connect 
client.auth("admin_password") 

то есть, что клиент зарегистрировать новый пользователь, отправив сообщение в полосе

iqr = Iq.new(:set) 
qr = IqQuery.new 
qr.add_namespace('jabber:iq:register') 
username = 'new_user' 
password = 'new_user_password' 
qr.add(REXML::Element.new('username').add_text(username)) 
qr.add(REXML::Element.new('password').add_text(password)) 
iqr.add(qr) 
client.send iqr 
+0

Это решение очень полезно для меня, но я не понимаю ваш результат, так что вы можете это объяснить? –

0

Какую версию xmpp4r вы используете? Вы пробовали версию GitHub?

gem sources -a http://gems.github.com (you only need to do this once!) 
gem install ln-xmpp4r 
+0

Я использую версию 0.5, который я думаю является последним. –

Смежные вопросы