İsteklerinize Zaman Filtreleri Uygulama

Bu hızlı başlangıç kılavuzunda, hesabınız için bir OAuth jetonu alır ve dışa aktarılan verileri filtrelemek üzere zaman damgaları kullanarak Veri Taşınabilirliği API uç noktalarına istek gönderirsiniz.

Bu hızlı başlangıç kılavuzunda, Data Portability API'nin zamana dayalı erişim ile nasıl kullanılacağı ve desteklenen kaynaklar için zaman filtrelerinin nasıl uygulanacağı ele alınmaktadır. Kullanıcı verilerine zamana dayalı erişim hakkında daha fazla bilgi için Zamana Dayalı Erişimi Kullanma başlıklı makaleyi inceleyin.

Öğrenecekleriniz

Bu hızlı başlangıç kılavuzunda şunları öğreneceksiniz:

  • Yalnızca son dışa aktarma işleminizden bu yana yeni verileri dışa aktarmak için InitiatePortabilityArchiveuç noktasına kimliği doğrulanmış yinelenen istekler gönderin.
  • Yalnızca son 6 aya ait verileri dışa aktarmak için InitiatePortabilityArchive uç noktasına kimlik doğrulaması yapılmış bir istek gönderin.
  • Yalnızca belirli bir dönemdeki verileri dışa aktarmak için InitiatePortabilityArchive uç noktasına kimlik doğrulaması yapılmış bir istek gönderin.

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için:

  • Data Portability API'nin bulunduğunuz yerdeki kullanıcılar tarafından kullanılabildiğini doğrulayın. Desteklenen ülke ve bölgelerin listesi için "Verilerinizin bir kopyasını üçüncü taraflarla paylaşma" sayfasındaki Sık Sorulan Sorular bölümüne bakın.
  • Data Portability API'nin kurulum adımlarını tamamlayın.
  • JavaScript web uygulamaları için OAuth'u yapılandırma adımlarını uygulayın. Üretimde normalde web sunucusu uygulamaları için OAuth akışı gibi farklı bir akış kullanırsınız. Bu hızlı başlangıç kılavuzunda, basitlik açısından JavaScript web uygulaması akışı kullanılmaktadır.
    • Yetkilendirme kimlik bilgilerinizi oluştururken OAuth 2.0 istemci kimliğinizi ve yetkili yönlendirme URI'nizi (ör. https://google.com) not edin. Hızlı başlangıç kılavuzunun ilerleyen bölümlerinde bu bilgilere ihtiyacınız olacaktır.
    • Data Portability API için kapsamları yapılandırırken bu hızlı başlangıç kılavuzunun myactivity.search kaynak grubunu kullandığını unutmayın: https://www.googleapis.com/auth/dataportability.myactivity.search.
    • Erişime izin vermek istediğiniz süreyi seçerken zamana dayalı erişim ile zaman filtrelemeyi test etmek için 30 gün'ü seçmeniz gerekir. (Zaman filtreleri tek seferlik erişimde de çalışır.)
  • OAuth jetonu alın.
  • Kuruluşunuzun sahibi olduğu veya kontrol ettiği bir hesaba erişme Bu hesaptaki arama etkinliği verileri bu hızlı başlangıç kılavuzunda dışa aktarılır.

OAuth jetonu alma

Bu hızlı başlangıç kılavuzunda, bir URL kullanarak OAuth jetonu almak için yetkilendirme isteği gönderirsiniz. Bu işlem, JavaScript web uygulamaları için akışı kullanır. Bu akış, yenileme jetonu döndürmez.

Üretim uygulaması için genellikle, isteğe bağlı olarak erişim jetonları oluşturmak üzere kullanılabilecek bir yenileme jetonu almak için bir OAuth akışı kullanırsınız. Buna örnek olarak sunucu tarafı web uygulamaları akışı verilebilir.

OAuth jetonu almak için:

  1. Aşağıdaki gibi bir URL oluşturun.

    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

    URL'de:

    • client_id, OAuth istemci kimliğinizdir.
    • redirect_uri, yetkilendirilmiş yönlendirme URI'nizdir (ör. https://google.com).

    Bu hızlı başlangıç kılavuzunun URL'sinde arama etkinliği kapsamının kullanıldığına dikkat edin. Zaman filtrelerini destekleyen tüm kapsamları kullanabilirsiniz.

  2. URL'yi tarayıcınızın adres çubuğuna yapıştırın ve OAuth akışında belirtilen adımları uygulayın. Bu akış, bu hızlı başlangıç kılavuzunda kullandığınız, kuruluşunuza ait veya kuruluşunuz tarafından kontrol edilen hesapta oturum açmanızı gerektirir.

    Bu, OAuth kapsamlarına izin veren hesaptır. İzin ekranı şu şekilde görünmelidir (Ekranınızdaki metin bu resimdeki metinden farklı olabilir):

    Kullanıcının arama etkinliği verilerine erişime izin vermeyi kabul ettiği izin ekranı

  3. Erişim izni verilecek kapsamları ve hesabın verilerine erişimi paylaşacağınız süreyi (bir kez, 30 gün veya 180 gün) seçin. Bu hızlı başlangıç kılavuzu için 30 gün'ü seçin. (Zaman filtreleri, tek seferlik erişimde de çalışır.)

  4. İzin verdikten ve erişimin süresine karar verdikten sonra yönlendirme URI'sine (https://google.com) yönlendirilirsiniz. Adres çubuğunda oluşturulan URL, OAuth erişim jetonunu içerir.

    Örneğin, kullanıcı hesabı dataportability.myactivity.search kapsamına OAuth erişimi verirse oluşturulan URL şu şekilde görünür:

    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

    URL'de your_OAuth_token, jetonu temsil eden bir dizedir.

  5. OAuth jetonunu doğrulamak için bu URL'yi tarayıcınıza yapıştırın:

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

    Yanıt şu şekilde görünmelidir:

    {
      "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"
    }
    

    İstek göndermek için azp veya aud alanlarına ihtiyacınız yoktur. azp alanı, yetkili sunucunun client_id değerini temsil eder. aud alanı ise bu jetonun hedef kitlesini tanımlar. Bu alan, uygulamanızın istemci kimliklerinden birine eşit olur.

  6. OAuth jetonunuzu ve API anahtarınızı alın. Data Portability API'ye çağrı yapmak için bunlara ihtiyacınız vardır.

Uç noktalara istek gönderme

Bu hızlı başlangıç kılavuzunda, dışa aktarılan verileri zaman damgaları ile filtrelemek için Data Portability API uç noktalarını çağırmak üzere curl komutlarını kullanırsınız.Bu komutlar için daha önce topladığınız OAuth jetonu ve API anahtarı gerekir.

Son dışa aktarma işlemine ait veriler

Son dışa aktarma işleminizden sonraki yeni verileri dışa aktarmak için zamana dayalı erişimle zaman filtrelerini kullanabilirsiniz. Örneğin, https://www.googleapis.com/auth/dataportability.myactivity.search kapsamını ele alalım.

  1. Öncelikle InitiatePortabilityArchive uç noktasına kimliği doğrulanmış bir istek gönderirsiniz. Bu istek, veri kümesinin tamamı için bir arşivleme işi başlatır.

    Aşağıdaki curl komutunu çalıştırın:

    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

    Komutta:

    • your_OAuth_token, OAuth jetonunuzdur.

    InitiatePortabilityArchive isteği bir archiveJobId ve accessType döndürür. İş kimliği, veri arşivindeki durumu almak için kullanılır ve erişim türü, verilere tek seferlik mi yoksa zamana dayalı erişim mi verildiğini belirler. Zamana dayalı erişim için şunları görürsünüz:

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

    Geçerli bir OAuth jetonu sağlamazsanız şu hata mesajı döndürülür:

    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. Ardından, arşivleme işinin durumunu almak için GetPortabilityArchiveState uç noktasına kimlik doğrulaması yapılmış bir istek gönderirsiniz.

    Aşağıdaki curl komutunu çalıştırın:

    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

    Komutta:

    • your_OAuth_token, OAuth jetonunuzdur.
    • your_job_id_1, InitiatePortabilityArchive isteği tarafından döndürülen iş kimliğidir.

    Yanıt, işin durumuna bağlıdır. İş tamamlanmadıysa yanıtta mevcut durum sağlanır. İş tamamlanana kadar bu uç noktaya düzenli olarak istek göndermeniz gerekir.

    {
      "state": "IN_PROGRESS"
    }
    

    İş tamamlandıysa yanıtta durum ve veri arşivini indirmek için kullanılan bir veya daha fazla imzalı URL bulunur. Ayrıca, InitiatePortabilityArchive adresine yapılan ilk aramanın zaman damgasını temsil eden bir export_time alanı da vardır.

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

    Veri arşivini indirmek için imzalanmış URL'yi tarayıcınıza yapıştırın. Beklenen arama etkinliği verilerini içerdiğinden emin olmak için arşivin içeriğini incelemeniz gerekir.

    Yanıtta FAILED durumu alırsanız RetryPortabilityArchive yöntemini kullanarak dışa aktarma işlemini yeniden deneyebilirsiniz.

  3. En az 24 saat bekleyin ve 1. adımdakiyle aynı komutu kullanarak InitiatePortabilityArchive için başka bir istek gönderin. Bu kez start_time olarak export_time değerini kullanın.

    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

    Zamana dayalı erişim için aşağıdakiler döndürülür:

    {
      "archiveJobId": "<your_job_id_2>"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  4. Arşivleme işinin durumunu almak için GetPortabilityArchiveState uç noktasına kimliği doğrulanmış bir istek göndermek üzere 2. adımı tekrarlayın (<your_job_id_2> kullanarak).

  5. İş tamamlandığında yanıt şu şekilde olur:

      {
        "state": "COMPLETE",
        "urls": [
          "signed_urls"
        ],
        "start_time": timestamp_of_first_initiate_request,
        "export_time": timestamp_of_second_initiate_request
      }
    
  6. İkinci dışa aktarma işleminde yalnızca ilk dışa aktarma işleminden sonra oluşturulan yeni verilerin yer aldığını doğrulayın.

Son 6 aya ait veriler

Ayrıca, tüm veri kümesinin yerine yalnızca en son verileri dışa aktarmak için zaman filtrelerini de kullanabilirsiniz.

  1. Bugünün tarihinin 2024-10-01 olduğunu ve son 6 ayın verilerini dışa aktarmak istediğinizi varsayalım. Öncelikle, "2024-04-01T00:00:00Z" start_time değeriyle InitiatePortabilityArchive uç noktasına kimlik doğrulaması yapılmış bir istek gönderirsiniz.

    Aşağıdaki curl komutunu çalıştırın:

    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

    Zamana dayalı erişim için aşağıdakiler döndürülür:

    {
      "archiveJobId": "job_id_1"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  2. Arşivleme işinin durumunu almak için GetPortabilityArchiveState uç noktasına istek gönderin.

    Aşağıdaki curl komutunu çalıştırın:

    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

    İş tamamlandığında yanıt şu şekilde olur:

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

    start_time değerinin 1. adımda belirtilen start_time olduğunu ve export_time değerinin 1. adımda InitiatePortabilityArchive çağrısının yapıldığı zaman damgası olduğunu unutmayın.

  3. Dışa aktarma işleminin yalnızca son altı aya ait verileri içerdiğini doğrulayın.

Belirli bir zaman dilimindeki veriler

Belirli bir tarih aralığından (ör. yalnızca 2023'ten) verileri dışa aktarmak için zaman filtrelerini kullanabilirsiniz.

  1. Öncelikle, "2023-01-01T00:00:00Z" start_time ve "2023-12-31T23:59:59Z" end_time değerleriyle InitiatePortabilityArchive uç noktasına kimlik doğrulaması yapılmış bir istek gönderirsiniz.

    Aşağıdaki curl komutunu çalıştırın:

    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

    Zamana dayalı erişim için aşağıdakiler döndürülür:

    {
      "archiveJobId": "job_id_1"
      "accessType": "ACCESS_TYPE_TIME_BASED"
    }
    
  2. Arşivleme işinin durumunu almak için GetPortabilityArchiveState uç noktasına istek gönderin.

    Aşağıdaki curl komutunu çalıştırın:

    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

    İş tamamlandığında yanıt şu şekilde olur:

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

    start_time değerinin 1. adımda belirtilen start_time olduğunu ve export_time değerinin 1. adımda sağlanan end_time değerine eşit olduğunu unutmayın.

  3. Dışa aktarma işleminin yalnızca 2023'e ait veriler içerdiğini doğrulayın.

Desteklenen kapsamlar

Aşağıdaki kapsamlar zaman filtrelerini destekler:

  • 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

Dikkat: Desteklenen ve desteklenmeyen kapsamları karıştıran zaman filtreli istekler, The requested resources do not support time filters ifadesini içeren bir INVALID_ARGUMENT hatasıyla sonuçlanır.