mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-24 03:00:15 +00:00
Add support for X-FACEBOOK-PLATFORM SASL mechanism.
This requires an extra credential for SASL authentication: xmpp = ClientXMPP('user@chat.facebook.com', '...access_token...') xmpp.credentials['api_key'] = '...api_key...'
This commit is contained in:
parent
0d2125e737
commit
71ea430c62
2 changed files with 40 additions and 0 deletions
|
@ -4,3 +4,4 @@ from sleekxmpp.thirdparty.suelta.mechanisms.cram_md5 import CRAM_MD5
|
|||
from sleekxmpp.thirdparty.suelta.mechanisms.digest_md5 import DIGEST_MD5
|
||||
from sleekxmpp.thirdparty.suelta.mechanisms.scram_hmac import SCRAM_HMAC
|
||||
from sleekxmpp.thirdparty.suelta.mechanisms.messenger_oauth2 import X_MESSENGER_OAUTH2
|
||||
from sleekxmpp.thirdparty.suelta.mechanisms.facebook_platform import X_FACEBOOK_PLATFORM
|
||||
|
|
39
sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py
vendored
Normal file
39
sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
from sleekxmpp.thirdparty.suelta.util import bytes
|
||||
from sleekxmpp.thirdparty.suelta.sasl import Mechanism, register_mechanism
|
||||
|
||||
try:
|
||||
import urlparse
|
||||
except ImportError:
|
||||
import urllib.parse as urlparse
|
||||
|
||||
|
||||
|
||||
class X_FACEBOOK_PLATFORM(Mechanism):
|
||||
|
||||
def __init__(self, sasl, name):
|
||||
super(X_FACEBOOK_PLATFORM, self).__init__(sasl, name)
|
||||
self.check_values(['access_token', 'api_key'])
|
||||
|
||||
def process(self, challenge=None):
|
||||
if challenge is not None:
|
||||
values = {}
|
||||
for kv in challenge.split('&'):
|
||||
key, value = kv.split('=')
|
||||
values[key] = value
|
||||
|
||||
resp_data = {
|
||||
'method': values['method'],
|
||||
'v': '1.0',
|
||||
'call_id': '1.0',
|
||||
'nonce': values['nonce'],
|
||||
'access_token': self.values['access_token'],
|
||||
'api_key': self.values['api_key']
|
||||
}
|
||||
resp = '&'.join(['%s=%s' % (k, v) for k, v in resp_data.items()])
|
||||
return bytes(resp)
|
||||
return bytes('')
|
||||
|
||||
def okay(self):
|
||||
return True
|
||||
|
||||
register_mechanism('X-FACEBOOK-PLATFORM', 40, X_FACEBOOK_PLATFORM, use_hashes=False)
|
Loading…
Reference in a new issue