php - Google डिस्क पुश नोटिफिकेशन प्राप्त करना




push-notification google-api (2)

आप दस्तावेज़ीकरण की जांच करना चाहते हैं - पुश नोटिफिकेशन , यह बताता है कि पुश नोटिफिकेशन का उपयोग कैसे करें, जो आपके ऐप को सूचित करते हैं, जब एक संसाधन परिवर्तन होता है।

प्रतिक्रिया देखें

अगर घड़ी अनुरोध सफलतापूर्वक एक अधिसूचना चैनल बनाता है, तो यह एक HTTP 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 time as Unix timestamp (in ms), if applicable.
}

और अगर आप अधिसूचना संदेश स्वरूप को समझेंगे:

फाइलों और परिवर्तनों के लिए अधिसूचना संदेश खाली हैं।

डॉक्स ने नमूने भी प्रदान किए:

फ़ाइलें संसाधनों के लिए सूचना संदेश बदलें, जिसमें अनुरोध शरीर शामिल नहीं है:

POST https://example.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

परिवर्तन संसाधनों के लिए सूचना संदेश बदलें, जिसमें एक अनुरोध निकाय शामिल है:

POST https://example.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"
}

ड्राइव एपीआई अधिसूचना घटनाओं को समझना

यह अनुभाग आपके द्वारा प्राप्त की जा सकने वाली अधिसूचना संदेशों के बारे में जानकारी देता है, जब आप ड्राइव एपीआई के साथ पुश नोटिफिकेशन का उपयोग कर सकते हैं।

आप पुश सूचनाएं खेल का मैदान पर नीचे दिए गए किसी भी ईवेंट को आज़मा सकते हैं या GitHub से स्रोत को डाउनलोड कर सकते हैं।

आशा है कि यह जानकारी मदद करता है

मैं यहां वर्णित विधि का उपयोग करके Google ड्राइव से पुश नोटिफिकेशन प्राप्त करने के लिए एक चैनल स्थापित करने में सक्षम हूं , ड्राइव से वेबहोक नोटिफिकेशन प्राप्त नहीं कर रहा है, क्यों? । मुझे सूचनाएं मिल रही हैं और सब कुछ ठीक काम कर रहा है मेरी समस्या यह है कि जब मुझे पुश सूचनाएं प्राप्त होती हैं, तो मुझे केवल यह जानकारी मिलती है:

Content-Length: 0
Accept: */*
Accept-Encoding: gzip,deflate,br
Connection: Keep-alive
Host: www.domain.com
User-Agent: APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)
X-Goog-Channel-Expiration: Thu, 29 Dec 2016 00:00:00 GMT
X-Goog-Channel-Id: 01ecb23c-e718-8674-6ab3-623931741334
X-Goog-Message-Number: 2745870
X-Goog-Resource-Id: hw75x654x56jYhRNkfU5CFEXXXhtlj8
X-Goog-Resource-State: change
X-Goog-Resource-Uri: https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=658&restrictToMyDrive=false&spaces=drive&alt=json

इस दस्तावेज़ीकरण के अनुसार, कुछ "बदलें" अधिसूचना संदेश हैं जिसमें एक अनुरोध निकाय शामिल है । दुर्भाग्यवश, मैं अनुरोध शरीर प्राप्त करने में असमर्थ हूं।

धक्का सूचनाओं को संभालती है जो स्क्रिप्ट निम्न तर्क है:

$oldcontent = file_get_contents('notifications.txt');

$newnotsfile = fopen("notifications.txt", "w");

$post = file_get_contents('php://input');
$requestBody = json_decode($post , TRUE); //convert JSON into array

$time = date("Y-M-d H:i:s", time());
fwrite($newnotsfile , "<br><br>---------------- │ Time: ".$time."<br><br>");

foreach (getallheaders() as $name => $value) {
    fwrite($newnotsfile , $name.": ".$value."<br>");
} 

fwrite($newnotsfile , $requestBody );
fwrite($newnotsfile , "<br><br>");

fwrite($newnotsfile , $oldcontent);
fclose($newnotsfile );

?>

मुझे लगा कि $post = file_get_contents('php://input'); का उपयोग करके $post = file_get_contents('php://input'); मैं अनुरोध शरीर पर कब्जा होगा लेकिन सच यह है कि यह कुछ भी नहीं कब्जा है अगर मैं सही समझता हूं, तो मुझे यहाँ विस्तृत संरचना के साथ एक परिवर्तन संसाधन प्राप्त होना चाहिए। क्या कुछ गड़बड़ है कि मैं कर रहा हूं या क्या मैं यह गलत समझा है? मैं किसी भी अंतर्दृष्टि की सराहना करता हूं जिसे पहले दिया जा सकता है और धन्यवाद!


वास्तव में कोई अनुरोध निकाय नहीं है जो वेबहुक अधिसूचना में भेजा जाता है। तो जैसे ही कॉलबैक यूआरएल में बदलाव आते हैं, परिवर्तनों को नीचे लाने के लिए संसाधन प्राप्त करने के लिए एक अनुरोध प्राप्त करके परिवर्तन किया जाता है

Resource URI : https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=895&restrictToMyDrive=false&spaces=drive&alt=json

या प्रोग्राम में बदलाव नीचे दिए गए कोड का उपयोग करके लाया जा सकता है

String pageToken = channelInfo.getCurrPageToken();
            List<Change> changes = service.changes().list(pageToken)
                    .execute().getChanges();

Google पुश नोटिफिकेशन डॉक इस उल्लेख का उल्लेख करने के बजाय स्पष्ट रूप से इसका उल्लेख कर सकता था कि अनुरोध शरीर में बदलाव आते हैं जो भ्रम का कारण है