अपने अनुरोधों पर समय के हिसाब से फ़िल्टर लागू करना

इस क्विकस्टार्ट में, आपको अपने खाते के लिए OAuth टोकन मिलता है. साथ ही, एक्सपोर्ट किए गए डेटा को फ़िल्टर करने के लिए, टाइमस्टैंप का इस्तेमाल करके, डेटा पोर्टेबिलिटी एपीआई एंडपॉइंट को अनुरोध भेजे जाते हैं.

इस क्विकस्टार्ट में, समय के हिसाब से ऐक्सेस करने के लिए Data Portability API का इस्तेमाल करने और काम करने वाले संसाधनों के लिए समय फ़िल्टर लागू करने का तरीका बताया गया है. उपयोगकर्ता के डेटा को समय के हिसाब से ऐक्सेस करने के बारे में ज़्यादा जानने के लिए, समय के हिसाब से ऐक्सेस करने की सुविधा का इस्तेमाल करना लेख पढ़ें.

आपको ये सब सीखने को मिलेगा

इस क्विकस्टार्ट गाइड में, आपको ये काम करने का तरीका पता चलेगा:

  • InitiatePortabilityArchive एंडपॉइंट पर, पुष्टि किए गए बार-बार अनुरोध भेजें, ताकि पिछले एक्सपोर्ट के बाद का नया डेटा ही एक्सपोर्ट किया जा सके.
  • सिर्फ़ पिछले छह महीनों का डेटा एक्सपोर्ट करने के लिए, InitiatePortabilityArchive एंडपॉइंट पर पुष्टि वाला अनुरोध भेजें.
  • सिर्फ़ किसी खास समयावधि का डेटा एक्सपोर्ट करने के लिए, InitiatePortabilityArchive एंडपॉइंट पर पुष्टि किया गया अनुरोध भेजें.

ज़रूरी शर्तें

यह क्विकस्टार्ट चलाने के लिए, आपको ये काम करने होंगे:

  • पुष्टि करें कि Data Portability API, आपके देश/इलाके में उपयोगकर्ताओं के लिए उपलब्ध है. इस सुविधा के साथ काम करने वाले देशों और इलाकों की सूची के लिए, "किसी तीसरे पक्ष के साथ अपने डेटा की कॉपी शेयर करना" पेज पर, आम तौर पर पूछे जाने वाले सवाल देखें.
  • Data Portability API के लिए, सेटअप करने का तरीका पूरा करें.
  • JavaScript वेब ऐप्लिकेशन के लिए OAuth को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं. आम तौर पर, प्रोडक्शन में वेब सर्वर ऐप्लिकेशन के लिए, OAuth फ़्लो जैसे किसी दूसरे फ़्लो का इस्तेमाल किया जाता है. आसानी से समझने के लिए, इस क्विकस्टार्ट में JavaScript वेब ऐप्लिकेशन फ़्लो का इस्तेमाल किया गया है.
    • ऑथराइज़ेशन क्रेडेंशियल बनाते समय, अपने OAuth 2.0 क्लाइंट आईडी और अनुमति वाले रीडायरेक्ट यूआरआई (उदाहरण के लिए, https://google.com) को नोट कर लें. आपको बाद में, तुरंत शुरू करने की सुविधा में इनकी ज़रूरत पड़ेगी.
    • Data Portability API के लिए स्कोप कॉन्फ़िगर करते समय, ध्यान रखें कि यह क्विकस्टार्ट, myactivity.search संसाधन ग्रुप का इस्तेमाल करता है: https://www.googleapis.com/auth/dataportability.myactivity.search.
    • ऐक्सेस की समयसीमा चुनते समय, आपको समय के हिसाब से ऐक्सेस की सुविधा के साथ, समय फ़िल्टर करने की सुविधा को आज़माने के लिए, 30 दिन चुनना चाहिए. (समय के हिसाब से फ़िल्टर, एक बार के ऐक्सेस के साथ भी काम करते हैं).
  • OAuth टोकन पाएं.
  • आपके संगठन के मालिकाना हक वाले या उसके कंट्रोल वाले खाते का ऐक्सेस पाना. इस खाते की खोज गतिविधि का डेटा, इस शुरुआती निर्देश में एक्सपोर्ट किया जाता है.

OAuth टोकन पाना

इस शुरुआती लेख में, यूआरएल का इस्तेमाल करके OAuth टोकन पाने के लिए, अनुमति का अनुरोध भेजने का तरीका बताया गया है. इस प्रोसेस में, JavaScript वेब ऐप्लिकेशन के लिए फ़्लो का इस्तेमाल किया जाता है. यह फ़्लो, रीफ़्रेश टोकन नहीं दिखाता.

आम तौर पर, किसी प्रोडक्शन ऐप्लिकेशन के लिए, रीफ़्रेश टोकन पाने के लिए OAuth फ़्लो का इस्तेमाल किया जाता है. इस टोकन का इस्तेमाल, मांग पर ऐक्सेस टोकन जनरेट करने के लिए किया जा सकता है. इसका एक उदाहरण, सर्वर साइड वेब ऐप्लिकेशन के लिए फ़्लो होगा.

OAuth टोकन पाने के लिए:

  1. ऐसा यूआरएल बनाएं जो कुछ ऐसा दिखे.

    https://accounts.google.com/o/oauth2/v2/auth?
    client_id=client_id&
    redirect_uri=redirect_uri&
    response_type=token&
    scope=https://www.googleapis.com/auth/dataportability.myactivity.search&
    state=developer-specified-value

    यूआरएल में:

    • client_id आपका OAuth क्लाइंट आईडी है.
    • redirect_uri, आपका अनुमति वाला रीडायरेक्ट यूआरआई है. उदाहरण के लिए, https://google.com.

    ध्यान दें कि इस क्विकस्टार्ट के यूआरएल में, खोज गतिविधि का स्कोप इस्तेमाल किया गया है. टाइम फ़िल्टर के साथ काम करने वाले किसी भी स्कोप का इस्तेमाल किया जा सकता है.

  2. यूआरएल को अपने ब्राउज़र के पता बार में चिपकाएं और OAuth फ़्लो में दिए गए निर्देशों का पालन करें. इस फ़्लो के लिए, आपको उस खाते में साइन इन करना होगा जिसका मालिकाना हक या कंट्रोल आपके संगठन के पास है और जिसका इस्तेमाल, इस शुरुआती निर्देश के लिए किया जा रहा है.

    यह वह खाता है जो OAuth स्कोप के लिए सहमति दे रहा है. सहमति वाली स्क्रीन इस तरह दिखनी चाहिए (आपकी स्क्रीन पर मौजूद टेक्स्ट, इस इमेज में मौजूद टेक्स्ट से अलग हो सकता है):

    सहमति वाली स्क्रीन, जहां उपयोगकर्ता, खोज गतिविधि के डेटा को ऐक्सेस करने की अनुमति देने के लिए सहमत होता है

  3. खाते के डेटा का ऐक्सेस देने के लिए स्कोप चुनें. साथ ही, यह भी चुनें कि खाते के डेटा का ऐक्सेस कितने समय के लिए शेयर किया जाए. जैसे, एक बार, 30 दिन या 180 दिन. इस क्विकस्टार्ट के लिए, 30 दिन चुनें. (समय फ़िल्टर, एक बार के ऐक्सेस के साथ भी काम करते हैं.)

  4. सहमति देने और ऐक्सेस की अवधि तय करने के बाद, आपको रीडायरेक्ट यूआरआई—https://google.com पर भेज दिया जाएगा. पता बार में जनरेट किए गए यूआरएल में OAuth ऐक्सेस टोकन शामिल होता है.

    उदाहरण के लिए, अगर उपयोगकर्ता खाता dataportability.myactivity.search स्कोप को OAuth ऐक्सेस देता है, तो जनरेट किया गया यूआरएल ऐसा दिखता है:

    https://google.com/#state=developer-specified-value&access_token=your_OAuth_token&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/dataportability.myactivity.search

    यूआरएल में, your_OAuth_token एक स्ट्रिंग है जो टोकन को दिखाती है.

  5. OAuth टोकन की पुष्टि करने के लिए, इस यूआरएल को अपने ब्राउज़र में चिपकाएं:

    https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=your_OAuth_token

    रिस्पॉन्स कुछ ऐसा दिखेगा:

    {
      "azp": <your_azp_value>,
      "aud": <your_aud_value>,
      "scope": "https://www.googleapis.com/auth/dataportability.myactivity.search",
      "exp": "1694210968",
      "expires_in": "3334",
      "access_type": "online"
    }
    

    अनुरोध करने के लिए, आपको azp या aud फ़ील्ड की ज़रूरत नहीं है. azpफ़ील्ड, प्रज़ेंटर के client_id को दिखाता है. साथ ही, aud फ़ील्ड से उस ऑडियंस की पहचान की जाती है जिसके लिए यह टोकन बनाया गया है. यह ऑडियंस, आपके ऐप्लिकेशन के किसी एक क्लाइंट आईडी के बराबर होगी.

  6. अपना OAuth टोकन और एपीआई पासकोड इकट्ठा करें. Data Portability API को कॉल करने के लिए, आपको इनकी ज़रूरत होगी.

एंडपॉइंट पर अनुरोध भेजना

इस शुरुआती लेख में, एक्सपोर्ट किए गए डेटा को फ़िल्टर करने के लिए, टाइमस्टैंप के साथ Data Portability API एंडपॉइंट को कॉल करने के लिए, curl निर्देशों का इस्तेमाल किया जाता है.इन निर्देशों के लिए, पहले से इकट्ठा किए गए OAuth टोकन और एपीआई कुंजी की ज़रूरत होती है.

पिछले एक्सपोर्ट का डेटा

पिछले एक्सपोर्ट के बाद का नया डेटा एक्सपोर्ट करने के लिए, समय के हिसाब से ऐक्सेस के साथ टाइम फ़िल्टर का इस्तेमाल किया जा सकता है. उदाहरण के लिए, https://www.googleapis.com/auth/dataportability.myactivity.search का दायरा देखें.

  1. सबसे पहले, InitiatePortabilityArchive एंडपॉइंट पर पुष्टि किया गया अनुरोध भेजा जाता है. इस अनुरोध से, पूरे डेटा कॉर्पस के लिए संग्रह करने की प्रोसेस शुरू हो जाती है.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{"resources":["myactivity.search"]}' \
    https://dataportability.googleapis.com/v1/portabilityArchive:initiate

    कमांड में:

    • your_OAuth_token आपका OAuth टोकन है.

    InitiatePortabilityArchive अनुरोध से archiveJobId और accessType मिलता है. जॉब आईडी का इस्तेमाल, डेटा संग्रह की स्थिति को वापस पाने के लिए किया जाता है. साथ ही, ऐक्सेस टाइप से यह तय होता है कि आपको डेटा का ऐक्सेस एक बार या समय के हिसाब से दिया गया है. समय पर आधारित ऐक्सेस के लिए, आपको यह दिखेगा:

    {
      "archiveJobId": "<your_job_id_1>"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    

    मान्य OAuth टोकन न देने पर, गड़बड़ी का यह मैसेज दिखता है:

    Request had invalid authentication credentials. Expected OAuth 2.0 access
    token, login cookie or other valid authentication credential. See
    https://developers.google.com/identity/sign-in/web/devconsole-project.

  2. इसके बाद, संग्रहित करने के प्रोसेस की स्थिति देखने के लिए, GetPortabilityArchiveState एंडपॉइंट पर पुष्टि किया गया अनुरोध भेजा जाता है.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X GET \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dataportability.googleapis.com/v1/archiveJobs/your_job_id_1/portabilityArchiveState

    कमांड में:

    • your_OAuth_token आपका OAuth टोकन है.
    • your_job_id_1, InitiatePortabilityArchive अनुरोध से मिला जॉब आईडी है.

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

    {
      "state": "IN_PROGRESS"
    }
    

    अगर जॉब पूरा हो जाता है, तो जवाब में स्थिति और एक या एक से ज़्यादा हस्ताक्षर किए गए यूआरएल शामिल होते हैं. इनका इस्तेमाल, डेटा संग्रह डाउनलोड करने के लिए किया जाता है. इसमें एक export_time फ़ील्ड भी होता है, जो InitiatePortabilityArchive को पहला कॉल करने के समय का टाइमस्टैंप दिखाता है.

    {
      "state": "COMPLETE",
      "urls": [
        "<signed_url>"
      ]
      "export_time": "<timestamp_of_first_initiate_request>"
    }
    

    डेटा का संग्रह डाउनलोड करने के लिए, हस्ताक्षर किया गया यूआरएल अपने ब्राउज़र में चिपकाएं. आपको संग्रह के कॉन्टेंट की जांच करनी चाहिए, ताकि यह पक्का किया जा सके कि उसमें खोज गतिविधि का ज़रूरी डेटा शामिल है.

    अगर आपको जवाब में FAILED स्टेटस मिलता है, तो RetryPortabilityArchive तरीके का इस्तेमाल करके, एक्सपोर्ट करने की कोशिश फिर से की जा सकती है.

  3. कम से कम 24 घंटे इंतज़ार करें. इसके बाद, पहले चरण में दिए गए निर्देश का इस्तेमाल करके, InitiatePortabilityArchive को फिर से ऐक्सेस करने का अनुरोध करें. हालांकि, इस बार start_time के तौर पर export_time का इस्तेमाल करें.

    curl -H 'Authorization: Bearer your_OAuth_token' -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{"resources":["myactivity.search"],
    "start_time": timestamp_of_first_initiate_request}' \
    https://dataportability.googleapis.com/v1/portabilityArchive:initiate

    समय के हिसाब से ऐक्सेस करने के लिए, यह जानकारी दिखेगी:

    {
      "archiveJobId": "<your_job_id_2>"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  4. <your_job_id_2> का इस्तेमाल करके संग्रहित करने के जॉब की स्थिति देखने के लिए, GetPortabilityArchiveState एंडपॉइंट पर पुष्टि वाला अनुरोध भेजने के लिए, दूसरा चरण दोहराएं.

  5. जॉब पूरा होने पर, आपको यह जवाब मिलेगा:

      {
        "state": "COMPLETE",
        "urls": [
          "signed_urls"
        ],
        "start_time": timestamp_of_first_initiate_request,
        "export_time": timestamp_of_second_initiate_request
      }
    
  6. पुष्टि करें कि दूसरे एक्सपोर्ट में सिर्फ़ वह नया डेटा शामिल हो जो पहले एक्सपोर्ट के बाद जनरेट हुआ है.

पिछले छह महीनों का डेटा

पूरे कॉर्पस के बजाय, सिर्फ़ हाल ही का डेटा एक्सपोर्ट करने के लिए, टाइम फ़िल्टर का इस्तेमाल भी किया जा सकता है.

  1. मान लें कि आज की तारीख 2024-10-01 है और आपको पिछले छह महीनों का डेटा एक्सपोर्ट करना है. सबसे पहले, InitiatePortabilityArchive एंडपॉइंट पर पुष्टि किया गया अनुरोध भेजा जाता है. इसमें "2024-04-01T00:00:00Z" के start_time का इस्तेमाल किया जाता है.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{"resources":["myactivity.search"],
    "start_time": "2024-04-01T00:00:00Z"}' \
    https://dataportability.googleapis.com/v1/portabilityArchive:initiate

    समय के हिसाब से ऐक्सेस करने के लिए, यह जानकारी दिखेगी:

    {
      "archiveJobId": "job_id_1"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  2. संग्रह करने के जॉब की स्थिति पाने के लिए, GetPortabilityArchiveState एंडपॉइंट पर अनुरोध करें.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X GET \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dataportability.googleapis.com/v1/archiveJobs/job_id_1/portabilityArchiveState

    जॉब पूरा होने पर, आपको यह जवाब मिलेगा:

    {
      "state": "COMPLETE",
      "urls": [
        "signed_urls"
      ],
      "start_time": "2024-04-01T00:00:00Z",
      "export_time": "2024-10-01T00:00:00Z"
    }
    

    ध्यान दें कि start_time, पहले चरण में बताया गया start_time है और export_time, पहले चरण में InitiatePortabilityArchive को कॉल करने का टाइमस्टैंप है.

  3. पुष्टि करें कि एक्सपोर्ट में सिर्फ़ पिछले छह महीनों का डेटा शामिल हो.

किसी खास समयावधि का डेटा

समय के फ़िल्टर का इस्तेमाल करके, तारीख की किसी खास सीमा के डेटा को एक्सपोर्ट किया जा सकता है. जैसे, सिर्फ़ 2023 का डेटा.

  1. सबसे पहले, InitiatePortabilityArchive एंडपॉइंट पर पुष्टि वाला अनुरोध भेजा जाता है. इसमें start_time "2023-01-01T00:00:00Z" और end_time "2023-12-31T23:59:59Z" होता है.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{"resources":["myactivity.search"],
    "start_time": "2023-01-01T00:00:00Z",
    "end_time": "2023-12-31T23:59:59Z"}' \
    https://dataportability.googleapis.com/v1/portabilityArchive:initiate

    समय के हिसाब से ऐक्सेस करने के लिए, यह जानकारी दिखेगी:

    {
      "archiveJobId": "job_id_1"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  2. संग्रह करने के जॉब की स्थिति पाने के लिए, GetPortabilityArchiveState एंडपॉइंट पर अनुरोध करें.

    यहां दिया गया कर्ल कमांड चलाएं:

    curl -H 'Authorization: Bearer your_OAuth_token' -X GET \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dataportability.googleapis.com/v1/archiveJobs/job_id_1/portabilityArchiveState

    जॉब पूरा होने पर, आपको यह जवाब मिलेगा:

    {
      "state": "COMPLETE",
      "urls": [
        "signed_urls"
      ],
      "start_time": "2023-01-01T00:00:00Z",
      "export_time": "2023-12-31T23:59:59Z"
    }
    

    ध्यान दें कि start_time, पहले चरण में दिया गया start_time है और export_time, पहले चरण में दिया गया end_time है.

  3. पुष्टि करें कि एक्सपोर्ट में सिर्फ़ 2023 का डेटा शामिल है.

इस्तेमाल किए जा सकने वाले स्कोप

ये स्कोप, टाइम फ़िल्टर के साथ काम करते हैं:

  • https://www.googleapis.com/auth/dataportability.myactivity.youtube
  • https://www.googleapis.com/auth/dataportability.myactivity.maps
  • https://www.googleapis.com/auth/dataportability.myactivity.search
  • https://www.googleapis.com/auth/dataportability.myactivity.myadcenter
  • https://www.googleapis.com/auth/dataportability.myactivity.shopping
  • https://www.googleapis.com/auth/dataportability.myactivity.play
  • https://www.googleapis.com/auth/dataportability.chrome.history

चेतावनी: समय के हिसाब से फ़िल्टर किए गए ऐसे अनुरोध जिनमें काम करने वाले और काम न करने वाले स्कोप का इस्तेमाल किया गया हो, उनसे INVALID_ARGUMENT गड़बड़ी का मैसेज मिलता है. इसमें The requested resources do not support time filters लिखा होता है.