मुझे यकीन नहीं है कि क्रोम सिंक xmpp का उपयोग करता है, कम से कम उस स्तर पर जब उसे क्लाइंट के साथ जानकारी का आदान-प्रदान करना होता है। यह 'प्रोटोकॉल बफर' Google तकनीक का उपयोग करता है। प्रोटोकॉल .proto प्रोटोकॉल विवरण फ़ाइलों का उपयोग करके दिया जाता है और आप इसे विशेष कंपाइलर का उपयोग करके अपनी भाषा की वस्तुओं में परिवर्तित कर सकते हैं। सिंक सर्वर https://clients4.google.com/chrome-sync पर आराम करता है और क्लाइंट बाइनरी बॉडी के साथ POST अनुरोध भेजता है जहां टाइप किया गया ClientToServerMessage संदेश रखा गया है। सिंक सर्वर से कनेक्ट होने पर आउटपुट यहां दिया गया है। पहला आउटपुट पायथन ऑब्जेक्ट 'एनवायरन' डब्लूएसजीआई वैरिएबल का एक प्रिप्रिंट है जहां HTTP हेडर भी रखे जाते हैं। दूसरी वस्तु ('====' के बाद) वास्तविक प्रोटोकॉल संदेश है।
{'CONTENT_LENGTH': '54',
'CONTENT_TYPE': 'application/octet-stream',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_AUTHORIZATION': 'GoogleLogin auth=MKhiqZsdz2RV4WrUJzPltxc2smTMcRnlfPALTOpf-Xdy9vsp6yUpS5cGuND0awqrYVUK4lhOJlh6OMsg093eBRghGGIgvWUTzU8PUvquy_c8Xn4sRiz_3tVJcke5eXi3q4qFDa6iVuEbT_0QhyPOjIQyeDOKRpZzMR3rpHsAs0ptFiTtUeTHsoIeUFT9nZPYzkET4-yHbDAp45_dxWdb-U6DPg24',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_HOST': 'localhost:8080',
'HTTP_USER_AGENT': 'Chrome MAC 0.4.21.6 (130497)-devel',
'PATH_INFO': '/chrome-sync/dev/command/',
'QUERY_STRING': 'client_id=SOME_SPECIAL_STRING',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '59031',
'REQUEST_METHOD': 'POST',
'SCRIPT_NAME': '',
'SERVER_NAME': 'vian-bizon.local',
'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0',
'SERVER_SOFTWARE': 'gevent/1.0 Python/2.6',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x100416140>,
'wsgi.input': <gevent.pywsgi.Input object at 0x102a04250>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'https',
'wsgi.version': (1, 0)}
'==================================='
share: "[email protected]"
protocol_version: 30
message_contents: GET_UPDATES
get_updates {
caller_info {
source: NEW_CLIENT
notifications_enabled: false
}
fetch_folders: true
from_progress_marker {
data_type_id: 47745
token: ""
notification_hint: ""
}
}
debug_info {
events {
type: INITIALIZATION_COMPLETE
}
events_dropped: false
}
यह ओएथ आधारित प्रमाणीकरण के लिए होता है। आप HTTP_AUTHORIZATION फ़ील्ड में OAuth टोकन देख सकते हैं। जब आप एचटीएमएल संवाद 'Google खाता लॉगिन' के साथ बातचीत करते हैं तो ओथ टोकन आपको दिया जाता है। मुझे यकीन नहीं है लेकिन Google सेवाओं के लिए एक्सेस टोकन प्राप्त करने के लिए एपीआई की तरह लगता है सार्वजनिक रूप से उपलब्ध है।
आप XMPP प्रमाणन के बजाय, कृपया एक्स-GOOGLE-टोकन प्रमाणन तंत्र यहाँ का विवरण देखने के लिए देख रहे हैं: https://developers.google.com/talk/jep_extensions/oauth
:
Authenticate to Google Talk (XMPP, Smack) using an authToken
एक्स OAUTH2 प्राधिकरण के लिए, आप की जानकारी तक पहुंच सकते हैं
और यहाँ एक नमूना: http://pits.googlecode.com/svn/trunk/xmpp.c
ध्यान दें कि आप Chrome लॉग ब्राउज़र के प्रत्येक रन पर आबादी वाले फ़ाइलों के लिए XMPP धारा प्रवाह जोड़ सकते हैं - chrome_debug.log। इसे सक्षम करने के लिए, निम्न विकल्पों के साथ क्रोम चलाएं: --enable-logging --v = 2
आपके उत्तर के लिए धन्यवाद! मैंने यह भी देखा कि क्रोम उस सर्वर से कनेक्ट हो रहा है, लेकिन मुझे लगता है कि यह केवल एक्सएमपीपी के माध्यम से सिंक अधिसूचनाओं की सदस्यता लेने या सिंक सर्वर के साथ उस क्लाइंट/ब्राउज़र को पंजीकृत करने के लिए है? मैंने एक Google प्रस्तुति में पढ़ा है कि सर्वर लोड और जटिलता को कम करने के लिए एक्सएमपीपी के माध्यम से टैब सिंक किया जाता है (बस कल्पना करें कि सिंक अपडेट की जांच के लिए हर मिनट सर्वर पर मतदान करने वाले 10 मिलियन क्रोम ब्राउज़र)। लेकिन मुझे लगता है कि आप सही हैं और एक्सएमपीपी संदेश प्रोटोबफ हैं - जैसे ही मैं सर्वर से कनेक्ट हो जाता हूं, मुझे कुछ सौदा करना पड़ता है ... –
क्या आपने स्मैक का उपयोग कर क्रोम सिंक xmpp से कनेक्ट करने में कामयाब रहे हैं? आप ओथ टोकन कैसे प्राप्त करते हैं? – rustyx
@rustyx: नहीं, दुख की बात है कि मैंने नहीं किया है ... // ने अभी तक vians को संपादित नहीं किया है - बहुत बहुत धन्यवाद, मैं इसे देख लूंगा! –