python - Using sleekxmpp to send Google Talk Chats using OAuth2.0 -


i'm new python , need authenticating chatbot via oauth2. have google talk chatbot setup using sleekxmpp python. comes builtin plugin called 'google' don't know how use.

1) have setup service account on googles developer console gave me json key , request access token scoped gtalk via oauth2client.

def oauthping():     json_key = json.load(open(credentialspath))     jid = json_key['client_email']     scope = ['https://www.googleapis.com/auth/googletalk']     accesstoken = signedjwtassertioncredentials(json_key['client_email'], json_key['private_key'], scope)     return accesstoken, jid 

2) send chat:

def sendping(toperson, topersonmessage, accesstoken, jid):     if sys.version_info < (3, 0):        reload(sys)        sys.setdefaultencoding('utf8')     else:        raw_input = input      xmpp = sendmsgbot.sendmsgbot(jid, toperson, unicode(topersonmessage))     xmpp.credentials['access_token'] = accesstoken      xmpp.register_plugin('xep_0030')  # service discovery     xmpp.register_plugin('xep_0004')  # date form     xmpp.register_plugin('google')  # oauth2     xmpp.register_plugin('xep_0199')  # xmpp ping      # connect xmpp server , start processing xmpp stanzas.     if xmpp.connect(('talk.google.com', 5222)):        xmpp.process(block=true)     else:        print("unable connect google talk") 

3) sendmsgbot class:

class sendmsgbot(sleekxmpp.clientxmpp):      """     basic sleekxmpp bot log in, send message,     , log out.     """      def __init__(self, jid, recipient, message):         sleekxmpp.clientxmpp.__init__(self, jid, 'ignore')          # message wish send, , jid         # receive it.         self.recipient = recipient         self.msg = message          # session_start event triggered when         # bot establishes connection server         # , xml streams ready use. want         # listen event we can initialize         # our roster.         self.add_event_handler("session_start", self.start)      def start(self, event):         """         process session_start event.          typical actions session_start event         requesting roster , broadcasting initial         presence stanza.          """         self.send_presence()         self.get_roster()          self.send_message(mto=self.recipient,                           mbody=self.msg,                           mtype='chat')          # using wait=true ensures send queue         # emptied before ending session.         self.disconnect(wait=true) 

any appreciated. thanks.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -