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.digest_md5 import DIGEST_MD5
|
||||||
from sleekxmpp.thirdparty.suelta.mechanisms.scram_hmac import SCRAM_HMAC
|
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.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