2016-11-27 1 views
0

J'ai récemment essayé d'implémenter le client de pows ​​de yowsup sur mon pi de framboise (courir le raspbian). J'ai téléchargé toutes les bibliothèques pertinentes pour yowsup et complété le processus d'inscription en deux étapes.L'autorisation de Yowsup ne fonctionnait pas

J'ai pris les exemples de fichiers layer.py et run.py du yowsup github pour créer un simple bot d'écho.

Lorsque je tente de lancer le run.py je suis rencontré l'erreur suivante:

Toute aide est très appréciée!

python run.py 
Traceback (most recent call last): 
    File "run.py", line 20, in <module> 
    stack.loop() #this is the program mainloop 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/stacks/yowstack.py", line 196, in loop 
    asyncore.loop(*args, **kwargs) 
    File "/usr/lib/python2.7/asyncore.py", line 216, in loop 
    poll_fun(timeout, map) 
    File "/usr/lib/python2.7/asyncore.py", line 156, in poll 
    read(obj) 
    File "/usr/lib/python2.7/asyncore.py", line 87, in read 
    obj.handle_error() 
    File "/usr/lib/python2.7/asyncore.py", line 83, in read 
    obj.handle_read_event() 
    File "/usr/lib/python2.7/asyncore.py", line 449, in handle_read_event 
    self.handle_read() 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/network/layer.py", line 102, in handle_read 
    self.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/network/layer.py", line 110, in receive 
    self.toUpper(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/stanzaregulator/layer.py", line 29, in receive 
    self.processReceived() 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/stanzaregulator/layer.py", line 49, in processReceived 
    self.toUpper(oneMessageData) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/auth/layer_crypt.py", line 65, in receive 
    self.toUpper(payload) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/coder/layer.py", line 35, in receive 
    self.toUpper(node) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/logger/layer.py", line 14, in receive 
    self.toUpper(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/axolotl/layer_control.py", line 44, in receive 
    self.toUpper(protocolTreeNode) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 189, in receive 
    s.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/axolotl/layer_receive.py", line 44, in receive 
    self.toUpper(protocolTreeNode) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 76, in toUpper 
    self.__upper.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 189, in receive 
    s.receive(data) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/__init__.py", line 125, in receive 
    recv(node) 
    File "/usr/local/lib/python2.7/dist-packages/yowsup2-2.5.0-py2.7.egg/yowsup/layers/auth/layer_authentication.py", line 81, in handleFailure 
    raise AuthError(nodeEntity.getReason()) 
yowsup.layers.auth.autherror.AuthError: not-authorized 

Répondre

0

J'ai récemment eu un problème très similaire, et je crois que le problème est que le tutoriel est obsolète. Il y a maintenant trois couches Axolotl que vous devez inclure dans votre pile, au lieu de la seule (see this commit).

Si votre pile aurait ressemblé à ceci:

layers = (
    EchoLayer, 
    YowParallelLayer([YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, 
         YowAckProtocolLayer]), YowAxolotlLayer 
) + YOWSUP_CORE_LAYERS 

Il doit maintenant ressembler à ceci:

layers = (
    EchoLayer, 
    YowParallelLayer([YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, 
         YowAckProtocolLayer]), AxolotlReceivelayer, AxolotlSendLayer, AxolotlControlLayer, 
) + YOWSUP_CORE_LAYERS 

Vous aurez besoin d'ajouter les importations suivantes ainsi:

from yowsup.layers.axolotl import AxolotlSendLayer, AxolotlControlLayer, AxolotlReceivelayer 

Veuillez noter que AxolotlReceivelayer a un 'L' minuscule dans 'couche'. Je pense que c'était probablement un oubli de la part des mainteneurs de Yowsup, puisque c'est incongru avec le reste de leur schéma de nommage. Ce que je fais est ceci:

from yowsup.layers.axolotl import AxolotlReceivelayer as AxolotlReceiveLayer 

juste pour que j'aie la cohérence dans mon code.