इस दस्तावेज़ में पुश नोटिफ़िकेशन के इस्तेमाल का तरीका बताया गया है. इससे संसाधन में बदलाव होने पर, आपके ऐप्लिकेशन को जानकारी मिल जाएगी.
खास जानकारी
Google Drive API, पुश नोटिफ़िकेशन की सुविधा देता है. इसकी मदद से, संसाधनों में हुए बदलावों को मॉनिटर किया जा सकता है. इस सुविधा का इस्तेमाल करके, अपने ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. इसकी मदद से, अतिरिक्त नेटवर्क और पॉलिंग संसाधनों से जुड़ी लागत को कम किया जा सकता है. इससे यह पता लगाया जा सकता है कि संसाधनों में बदलाव हुआ है या नहीं. जब भी निगरानी में रखे गए किसी संसाधन में बदलाव होता है, तो Google Drive API आपके ऐप्लिकेशन को सूचना देता है.
पुश नोटिफ़िकेशन का इस्तेमाल करने के लिए, आपको ये दो काम करने होंगे:
कॉलबैक पाने के लिए यूआरएल या "वेबहुक" सेट अप करें.
यह एक एचटीटीपीएस सर्वर है, जो एपीआई के उन सूचना मैसेज को मैनेज करता है जो किसी संसाधन में बदलाव होने पर ट्रिगर होते हैं.
हर उस संसाधन एंडपॉइंट के लिए एक (सूचना चैनल) सेट अप करें जिसे आपको देखना है.
चैनल, सूचना मैसेज के लिए रूटिंग की जानकारी देता है. चैनल सेट अप करने के दौरान, आपको उस यूआरएल की जानकारी देनी होगी जहां आपको सूचनाएं चाहिए. जब भी किसी चैनल के संसाधन में बदलाव होता है, तब Google Drive API उस यूआरएल पर
POST
अनुरोध के तौर पर सूचना भेजता है.
फ़िलहाल, Google Drive API, files
और changes
तरीकों में होने वाले बदलावों के लिए सूचनाएं भेजने की सुविधा देता है.
सूचना के चैनल बनाना
पुश नोटिफ़िकेशन का अनुरोध करने के लिए, आपको हर उस संसाधन के लिए सूचना चैनल सेट अप करना होगा जिसे आपको मॉनिटर करना है. सूचना चैनल सेट अप होने के बाद, Google Drive API आपके ऐप्लिकेशन को सूचना देता है कि निगरानी में रखे गए किसी भी संसाधन में बदलाव हुआ है.
स्मार्टवॉच के लिए अनुरोध करना
Google Drive API का हर ऐसा रिसॉर्स जिसे देखा जा सकता है उसके लिए, यहां दिए गए फ़ॉर्मैट के यूआरआई पर एक watch
तरीका होता है:
https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch
किसी खास संसाधन में हुए बदलावों के बारे में मैसेज पाने के लिए, सूचना चैनल सेट अप करें. इसके लिए, संसाधन के लिए watch
तरीके से POST
अनुरोध भेजें.
हर सूचना चैनल, किसी खास उपयोगकर्ता और
किसी खास संसाधन (या संसाधनों के सेट) से जुड़ा होता है. watch
अनुरोध तब तक पूरा नहीं किया जा सकेगा, जब तक मौजूदा उपयोगकर्ता या सेवा खाते के पास इस संसाधन का मालिकाना हक या उसे ऐक्सेस करने की अनुमति न हो.
उदाहरण
नीचे दिए गए कोड सैंपल में, channels
रिसॉर्स का इस्तेमाल करके, files.watch
तरीके से किसी एक files
रिसॉर्स में होने वाले बदलावों को ट्रैक करने का तरीका बताया गया है:
POST https://www.googleapis.com/drive/v3/files/fileId/watch Authorization: Bearer CURRENT_USER_AUTH_TOKEN Content-Type: application/json { "id": "01234567-89ab-cdef-0123456789ab", // Your channel ID. "type": "web_hook", "address": "https://mydomain.com/notifications", // Your receiving URL. ... "token": "target=myApp-myFilesChannelDest", // (Optional) Your files channel token. "expiration": 1426325213000 // (Optional) Your requested channel expiration date and time. }
नीचे दिए गए कोड सैंपल में, changes.watch
तरीके का इस्तेमाल करके, सभी changes
के लिए वॉचिंग शुरू करने के लिए, channels
संसाधन का इस्तेमाल करने का तरीका बताया गया है:
POST https://www.googleapis.com/drive/v3/changes/watch Authorization: Bearer CURRENT_USER_AUTH_TOKEN Content-Type: application/json { "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a77", // Your channel ID. "type": "web_hook", "address": "https://mydomain.com/notifications", // Your receiving URL. ... "token": "target=myApp-myChangesChannelDest", // (Optional) Your changes channel token. "expiration": 1426325213000 // (Optional) Your requested channel expiration date and time. }
ज़रूरी प्रॉपर्टी
हर watch
अनुरोध के साथ, आपको ये फ़ील्ड देने होंगे:
-
एक
id
प्रॉपर्टी स्ट्रिंग, जो आपके प्रोजेक्ट में इस नए सूचना चैनल की खास तौर पर पहचान करती है. हमारा सुझाव है कि आप एक यूनिवर्सल यूनीक आइडेंटिफ़ायर (UUID) या इससे मिलती-जुलती यूनीक स्ट्रिंग का इस्तेमाल करें. ज़्यादा से ज़्यादा 64 वर्ण इस्तेमाल किए जा सकते हैं.आपने जो आईडी वैल्यू सेट की है वह आपको इस चैनल से मिलने वाली हर सूचना के
X-Goog-Channel-Id
एचटीटीपी हेडर में दिखेगी. -
type
प्रॉपर्टी की स्ट्रिंग, जिसकी वैल्यूweb_hook
पर सेट की गई है. -
address
प्रॉपर्टी स्ट्रिंग, ऐसे यूआरएल के लिए सेट की जाती है जो इस सूचना चैनल से जुड़ी सूचनाएं सुनता है और उनका जवाब देता है. यह आपका वेबहुक कॉलबैक यूआरएल है. इसमें एचटीटीपीएस का इस्तेमाल करना ज़रूरी है.ध्यान दें कि Google Drive API इस एचटीटीपीएस पते पर सूचनाएं सिर्फ़ तब भेज सकता है, जब आपके वेब सर्वर पर मान्य एसएसएल सर्टिफ़िकेट इंस्टॉल किया गया हो. अमान्य सर्टिफ़िकेट में ये शामिल हैं:
- खुद हस्ताक्षर किए हुए सर्टिफ़िकेट.
- किसी गैर-भरोसेमंद सोर्स के हस्ताक्षर किए हुए सर्टिफ़िकेट.
- वे सर्टिफ़िकेट जो निरस्त कर दिए गए हैं.
- ऐसे सर्टिफ़िकेट जिनका विषय टारगेट होस्टनेम से मेल नहीं खाता.
वैकल्पिक प्रॉपर्टी
अपने watch
अनुरोध के साथ, ये वैकल्पिक फ़ील्ड भी दिए जा सकते हैं:
-
एक
token
प्रॉपर्टी, जो चैनल टोकन के तौर पर इस्तेमाल करने के लिए, आर्बिट्रेरी स्ट्रिंग वैल्यू तय करती है. सूचना चैनल के टोकन का इस्तेमाल कई कामों के लिए किया जा सकता है. उदाहरण के लिए, टोकन का इस्तेमाल करके यह पुष्टि की जा सकती है कि आने वाला हर मैसेज, आपके ऐप्लिकेशन से बनाए गए चैनल के लिए है. इससे यह पक्का किया जा सकता है कि सूचना को नकल नहीं किया जा रहा है. इसके अलावा, इस चैनल के मकसद के आधार पर, मैसेज को अपने ऐप्लिकेशन में सही डेस्टिनेशन पर भेजा जा सकता है. ज़्यादा से ज़्यादा 256 वर्ण इस्तेमाल किए जा सकते हैं.यह टोकन, इस चैनल के लिए आपके ऐप्लिकेशन को मिलने वाली हर सूचना के
X-Goog-Channel-Token
एचटीटीपी हेडर में शामिल होता है.अगर सूचना चैनल टोकन का इस्तेमाल किया जाता है, तो हमारा सुझाव है कि:
यूआरएल क्वेरी पैरामीटर जैसे, एक्सटेंसिबल एन्कोडिंग फ़ॉर्मैट का इस्तेमाल करें. उदाहरण:
forwardTo=hr&createdBy=mobile
इसमें OAuth टोकन जैसा संवेदनशील डेटा शामिल न करें.
-
expiration
प्रॉपर्टी स्ट्रिंग को उस तारीख और समय के यूनिक्स टाइमस्टैंप (मिलीसेकंड में) पर सेट किया गया है जब आपको Google Drive API को सूचना देने वाले इस चैनल के लिए मैसेज भेजना बंद करना है.अगर किसी चैनल के लिए खत्म होने का समय तय किया गया है, तो उसे
X-Goog-Channel-Expiration
एचटीटीपी हेडर की वैल्यू के तौर पर शामिल किया जाता है. यह वैल्यू, मनुष्य के पढ़ने लायक फ़ॉर्मैट में होती है. यह वैल्यू, आपके ऐप्लिकेशन को इस चैनल के लिए मिलने वाली हर सूचना के मैसेज में शामिल होती है.
अनुरोध से जुड़ी ज़्यादा जानकारी के लिए, एपीआई रेफ़रंस में
files
और changes
तरीकों के लिए watch
तरीका देखें.
जवाब देखें
अगर watch
अनुरोध, सूचना देने वाला चैनल बनाता है, तो यह एचटीटीपी 200 OK
स्टेटस कोड दिखाता है.
स्मार्टवॉच पर मिले जवाब के मैसेज में, आपके बनाए गए सूचना चैनल के बारे में जानकारी दी जाती है. इसकी जानकारी नीचे दिए गए उदाहरण में दी गई है.
{ "kind": "api#channel", "id": "01234567-89ab-cdef-0123456789ab"", // ID you specified for this channel. "resourceId": "o3hgv1538sdjfh", // ID of the watched resource. "resourceUri": "https://www.googleapis.com/drive/v3/files/o3hgv1538sdjfh", // Version-specific ID of the watched resource. "token": "target=myApp-myFilesChannelDest", // Present only if one was provided. "expiration": 1426325213000, // Actual expiration date and time as UNIX timestamp (in milliseconds), if applicable. }
अनुरोध के हिस्से के तौर पर भेजी गई प्रॉपर्टी के अलावा, रिटर्न की गई जानकारी में resourceId
और
resourceUri
भी शामिल होते हैं. इनसे, इस सूचना चैनल पर देखे जा रहे संसाधन की पहचान की जाती है.
सूचना चैनल के अन्य ऑपरेशन में, रिटर्न की गई जानकारी को पास किया जा सकता है. जैसे, जब आपको सूचनाएं पाना बंद करना हो.
रिस्पॉन्स के बारे में ज़्यादा जानकारी के लिए, एपीआई रेफ़रंस में
files
और changes
तरीकों के लिए watch
तरीका देखें.
मैसेज सिंक करना
किसी संसाधन को देखने के लिए सूचना चैनल बनाने के बाद, Google Drive API एक sync
मैसेज भेजता है. इससे पता चलता है कि
सूचनाएं पाने की सुविधा शुरू हो रही है. इन मैसेज के लिए, X-Goog-Resource-State
एचटीटीपी
हेडर की वैल्यू sync
है. नेटवर्क के समय से जुड़ी समस्याओं की वजह से, हो सकता है कि watch
तरीके का जवाब मिलने से पहले ही, आपको sync
मैसेज मिल जाए.
sync
सूचना को अनदेखा किया जा सकता है. हालांकि, इसका इस्तेमाल भी किया जा सकता है. उदाहरण के लिए, अगर आपको चैनल को बनाए रखना नहीं है, तो सूचनाएं पाने की सुविधा बंद करने के लिए, कॉल में X-Goog-Channel-ID
और X-Goog-Resource-ID
वैल्यू का इस्तेमाल किया जा सकता है. बाद में होने वाले इवेंट के लिए तैयारी करने के लिए, sync
सूचना का इस्तेमाल भी किया जा सकता है.
Google Drive API, sync
मैसेज को आपके यूआरएल पर भेजता है. इन मैसेज का फ़ॉर्मैट यहां दिया गया है.
POST https://mydomain.com/notifications // Your receiving URL. X-Goog-Channel-ID: channel-ID-value X-Goog-Channel-Token: channel-token-value X-Goog-Channel-Expiration: expiration-date-and-time // In human-readable format. Present only if the channel expires. X-Goog-Resource-ID: identifier-for-the-watched-resource X-Goog-Resource-URI: version-specific-URI-of-the-watched-resource X-Goog-Resource-State: sync X-Goog-Message-Number: 1
सिंक किए गए मैसेज में हमेशा X-Goog-Message-Number
एचटीटीपी हेडर वैल्यू 1
होती है. इस चैनल से मिलने वाली हर सूचना के मैसेज नंबर, पिछले मैसेज के मैसेज नंबर से ज़्यादा होते हैं. हालांकि, मैसेज नंबर क्रम से नहीं होते.
सूचना चैनलों को रिन्यू करें
सूचना चैनल के खत्म होने का समय तय किया जा सकता है. इसकी वैल्यू, आपके अनुरोध या Google Drive API की अंदरूनी सीमाओं या डिफ़ॉल्ट से तय की जाती है. इसमें ज़्यादा पाबंदी वाली वैल्यू का इस्तेमाल किया जाता है. अगर चैनल के लिए, समयसीमा खत्म होने की कोई तारीख तय की गई है, तो watch
तरीके से मिली जानकारी में, चैनल के खत्म होने का समय यूनिक्स टाइमस्टैंप (मिलीसेकंड में) के तौर पर शामिल किया जाता है. इसके अलावा, X-Goog-Channel-Expiration
एचटीटीपी हेडर में, आपके ऐप्लिकेशन को इस चैनल के लिए मिलने वाले हर सूचना मैसेज में, समयसीमा खत्म होने की तारीख और समय (मानव-पढ़ने लायक फ़ॉर्मैट में) शामिल होता है.
फ़िलहाल, सूचना चैनल को अपने-आप रिन्यू करने का कोई तरीका उपलब्ध नहीं है. जब किसी चैनल की समयसीमा खत्म होने वाली हो, तो आपको watch
तरीके का इस्तेमाल करके, उसे नए चैनल से बदलना होगा. हमेशा की तरह, आपको नए चैनल की id
प्रॉपर्टी के लिए एक यूनीक वैल्यू का इस्तेमाल करना होगा. ध्यान दें कि एक ही संसाधन के लिए दो सूचना चैनल चालू होने पर, "ओवरलैप" अवधि हो सकती है.
सूचनाएं पाएं
जब भी निगरानी में रखे गए किसी संसाधन में बदलाव होता है, तो आपके ऐप्लिकेशन को बदलाव के बारे में बताने वाला सूचना मैसेज मिलता है. Google Drive API, इन मैसेज को एचटीटीपीएस POST
अनुरोधों के तौर पर उस यूआरएल पर भेजता है जिसे आपने इस सूचना चैनल के लिए address
प्रॉपर्टी के तौर पर चुना है.
सूचना मैसेज के फ़ॉर्मैट को समझना
सूचना वाले सभी मैसेज में ऐसे एचटीटीपी हेडर का सेट होता है जिनमें
X-Goog-
प्रीफ़िक्स होते हैं.
कुछ तरह की सूचनाओं में मैसेज का मुख्य हिस्सा भी शामिल हो सकता है.
हेडर
Google Drive API से सूचना पाने वाले आपके यूआरएल पर पोस्ट किए गए मैसेज में, ये एचटीटीपी हेडर शामिल होते हैं:
हेडर | ब्यौरा |
---|---|
हमेशा मौजूद रहें | |
|
इस सूचना चैनल की पहचान करने के लिए, आपने जो यूयूआईडी या दूसरी यूनीक स्ट्रिंग दी है. |
|
यह एक इंटिजर है, जिससे इस सूचना चैनल के लिए मैसेज की पहचान की जाती है. sync मैसेज के लिए, वैल्यू हमेशा 1 होती है. चैनल पर हर मैसेज के बाद, मैसेज की संख्या बढ़ती है. हालांकि, ये संख्याएं एक क्रम में नहीं होतीं. |
|
देखे गए संसाधन की पहचान करने वाली वैल्यू. यह आईडी, एपीआई के सभी वर्शन पर काम करता है. |
|
संसाधन की नई स्थिति, जिसकी वजह से सूचना ट्रिगर हुई.
वैल्यू इस तरह की हो सकती हैं:
sync , add , remove , update ,
trash , untrash या change
.
|
|
देखे गए रिसॉर्स के लिए, एपीआई वर्शन के हिसाब से आइडेंटिफ़ायर. |
कभी-कभी मौजूद होता है | |
|
बदलावों के बारे में ज़्यादा जानकारी.
वैल्यू इस तरह की हो सकती हैं:
content ,
parents ,
children या
permissions
.
sync मैसेज के साथ नहीं दिया गया. |
|
सूचना चैनल की समयसीमा खत्म होने की तारीख और समय, जिसे ऐसे फ़ॉर्मैट में दिखाया गया हो जिसे कोई भी व्यक्ति आसानी से पढ़ सके. सिर्फ़ तब मौजूद होता है, जब इसकी वैल्यू दी गई हो. |
|
सूचना चैनल का टोकन, जिसे आपके ऐप्लिकेशन ने सेट किया था और जिसका इस्तेमाल सूचना के सोर्स की पुष्टि करने के लिए किया जा सकता है. सिर्फ़ तब मौजूद होता है, जब इसकी वैल्यू दी गई हो. |
files
और changes
के लिए सूचना मैसेज खाली हैं.
उदाहरण
files
संसाधनों के लिए सूचना वाले मैसेज को बदलें. इसमें अनुरोध का मुख्य हिस्सा शामिल नहीं होता:
POST https://mydomain.com/notifications // Your receiving URL. Content-Type: application/json; utf-8 Content-Length: 0 X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66 X-Goog-Channel-Token: 398348u3tu83ut8uu38 X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT X-Goog-Resource-ID: ret08u3rv24htgh289g X-Goog-Resource-URI: https://www.googleapis.com/drive/v3/files/ret08u3rv24htgh289g X-Goog-Resource-State: update X-Goog-Changed: content,properties X-Goog-Message-Number: 10
changes
संसाधनों के लिए, सूचना दिखाने वाले मैसेज को बदलें. इसमें, अनुरोध का मुख्य हिस्सा भी शामिल होता है:
POST https://mydomain.com/notifications // Your receiving URL. Content-Type: application/json; utf-8 Content-Length: 118 X-Goog-Channel-ID: 8bd90be9-3a58-3122-ab43-9823188a5b43 X-Goog-Channel-Token: 245t1234tt83trrt333 X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT X-Goog-Resource-ID: ret987df98743md8g X-Goog-Resource-URI: https://www.googleapis.com/drive/v3/changes X-Goog-Resource-State: changed X-Goog-Message-Number: 23 { "kind": "drive#changes" }
सूचनाओं का उत्तर दें
अनुरोध पूरा होने की जानकारी देने के लिए, इनमें से कोई भी स्टेटस कोड दिखाया जा सकता है:
200
, 201
, 202
, 204
या
102
.
अगर आपकी सेवा Google की एपीआई क्लाइंट लाइब्रेरी का इस्तेमाल करती है और 500
,502
, 503
या 504
नतीजे दिखाती है, तो Google Drive API, एक्सपोनेन्शियल बैकऑफ़ के साथ फिर से कोशिश करता है.
रिटर्न स्टेटस का कोई भी अन्य कोड, मैसेज भेजने में हुई गड़बड़ी माना जाता है.
Google Drive API के सूचना इवेंट को समझना
इस सेक्शन में, Google Drive API के साथ पुश नोटिफ़िकेशन का इस्तेमाल करने पर मिलने वाली सूचना के मैसेज के बारे में जानकारी दी गई है.
डिलीवर कब किया गया | ||
---|---|---|
sync |
files , changes |
चैनल बन गया. आपको इसके लिए सूचनाएं मिलने लगेंगी. |
add |
files |
कोई संसाधन बनाया गया या शेयर किया गया. |
|
files |
किसी मौजूदा संसाधन को मिटा दिया गया है या उसकी शेयरिंग रोक दी गई है. |
|
files |
किसी संसाधन की एक या उससे ज़्यादा प्रॉपर्टी (मेटाडेटा) अपडेट की गई हैं. |
|
files |
किसी संसाधन को ट्रैश में ले जाया गया है. |
|
files |
एक संसाधन को ट्रैश से निकाल दिया गया है. |
|
changes |
एक या उससे ज़्यादा चेंजलॉग आइटम जोड़ दिए गए हैं. |
update
इवेंट के लिए, X-Goog-Changed
एचटीटीपी हेडर दिया जा सकता है. उस हेडर में, कॉमा से अलग की गई एक सूची होती है. इसमें, हुए बदलावों के टाइप के बारे में बताया जाता है.
बदलाव का टाइप | यह दिखाता है |
---|---|
content |
संसाधन का कॉन्टेंट अपडेट कर दिया गया है. |
properties |
एक या उससे ज़्यादा संसाधन प्रॉपर्टी अपडेट कर दी गई हैं. |
parents |
एक या उससे ज़्यादा पैरंट रिसॉर्स जोड़े गए हैं या हटाए गए हैं. |
children |
एक या उससे ज़्यादा संसाधन चाइल्ड जोड़े गए हैं या हटाए गए हैं. |
permissions |
संसाधन की अनुमतियां अपडेट कर दी गई हैं. |
X-Goog-Changed
हेडर का उदाहरण:
X-Goog-Resource-State: update X-Goog-Changed: content, permissions
सूचनाएं पाने की सुविधा बंद करें
expiration
प्रॉपर्टी की मदद से, यह कंट्रोल किया जा सकता है कि सूचनाएं अपने-आप कब बंद हों. किसी चैनल की सदस्यता खत्म होने से पहले, उससे जुड़ी सूचनाएं पाने की सुविधा बंद की जा सकती है. इसके लिए, यहां दिए गए यूआरआई पर जाकर, stop
का इस्तेमाल करें:
https://www.googleapis.com/drive/v3/channels/stop
इस तरीके के लिए, आपको कम से कम चैनल की id
और resourceId
प्रॉपर्टी देनी होंगी, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है. ध्यान दें कि अगर Google Drive API में कई तरह के ऐसे रिसोर्स हैं जिनमें watch
तरीके हैं, तो सिर्फ़ एक stop
तरीका होगा.
सिर्फ़ वे उपयोगकर्ता किसी चैनल को रोक सकते हैं जिनके पास इसके लिए अनुमति है. खास तौर पर:
- अगर चैनल को किसी सामान्य उपयोगकर्ता खाते से बनाया गया था, तो चैनल को सिर्फ़ वही उपयोगकर्ता बंद कर सकता है जिसने चैनल बनाया था. यह उपयोगकर्ता, उसी क्लाइंट से जुड़ा होना चाहिए जिससे चैनल बनाया गया था. इसकी पहचान, ऑथराइज़ेशन टोकन से मिले OAuth 2.0 क्लाइंट आईडी से की जाती है.
- अगर चैनल किसी सेवा खाते से बनाया गया था, तो उसी क्लाइंट का कोई भी उपयोगकर्ता चैनल को रोक सकता है.
नीचे दिया गया कोड सैंपल, सूचनाएं पाने की सुविधा बंद करने का तरीका बताता है:
POST https://www.googleapis.com/drive/v3/channels/stop Authorization: Bearer CURRENT_USER_AUTH_TOKEN Content-Type: application/json { "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66", "resourceId": "ret08u3rv24htgh289g" }