از چارچوب درخواست حذف داده استفاده کنید

برخی مناطق مقررات حذف داده‌ها دارند که ناشران را ملزم می‌کند تا به کاربران محتوای خود وسیله‌ای برای درخواست حذف داده‌هایشان ارائه دهند. اگر ادغام پیشنهاد قیمت در لحظه شما از شناسه‌های شخص ثالث استفاده می‌کند و موجودی را از مناطقی که مقررات حذف داده‌ها دارند دریافت می‌کند، گوگل توصیه می‌کند که آن را با چارچوب درخواست حذف داده‌های IAB ادغام کنید.

وقتی کاربری تصمیم می‌گیرد شناسه‌های خود را از برنامه یا سایت ناشر حذف کند، چارچوب درخواست حذف داده به ناشر اجازه می‌دهد درخواست حذف داده را منتشر کند. ناشر درخواست حذف داده را به صرافی‌ها ارسال می‌کند که می‌تواند درخواست حذف داده را برای شما منتشر کند. وقتی درخواست حذف داده دریافت می‌کنید، باید درخواست را به نهادهایی که داده‌های شخص اول ناشر را با آنها به اشتراک گذاشته‌اید، منتشر کنید. به عنوان مثال، اگر یکپارچه‌سازی مناقصه باز دارید، باید درخواست را به پیشنهاددهندگانی در صرافی خود که داده‌های شخص اول با آنها به اشتراک گذاشته شده است، منتشر کنید.

این راهنما، تنظیمات اولیه‌ی یکپارچه‌سازی «چارچوب درخواست حذف داده» شما با گوگل اکسچنج را پوشش می‌دهد و مروری کلی بر گردش کار «چارچوب درخواست حذف داده» در چارچوب گوگل اکسچنج ارائه می‌دهد. برای راهنمایی بیشتر، به «چارچوب درخواست حذف داده» مراجعه کنید.

یکپارچه‌سازی خود را تنظیم کنید

برای شروع دریافت درخواست‌های حذف داده‌ها از گوگل، باید دامنه‌ای را که می‌خواهید با حساب کاربری خود مرتبط کنید، در گوگل ثبت کنید و یک فایل dsrdelete.json را در ریشه دامنه ثبت شده خود میزبانی کنید. برای ثبت دامنه خود در گوگل، با مدیر حساب خود تماس بگیرید. فایل dsrdelete.json چندین هدف را دنبال می‌کند، به عنوان مثال:

  • شناسایی نقطه پایانی که گوگل درخواست‌های حذف داده‌ها را به آنجا ارسال می‌کند.
  • فهرست شناسه‌های پشتیبانی‌شده و نحوه‌ی قالب‌بندی آن‌ها.
  • تعیین کلیدهای عمومی شما مطابق با استاندارد JSON Web Key (JWK)، که سایر طرف‌ها برای تأیید صحت درخواست‌های حذف داده‌های منتشر شده یا تأییدیه‌هایی که ارسال می‌کنید، استفاده می‌کنند.

برای جزئیات بیشتر در مورد فایل drsdelete.json ، مانند فیلدهای اجباری و اختیاری که می‌توانید پر کنید، به Discovery مراجعه کنید.

نقطه پایانی شما که در فایل dsrdelete.json مشخص شده است، باید درخواست‌های حذف داده‌های ورودی را دریافت و به آنها پاسخ دهد. گوگل توصیه می‌کند از یک کتابخانه رمزنگاری برای زبان برنامه‌نویسی انتخابی خود استفاده کنید تا درخواست‌های دریافتی را تأیید کرده و تأییدیه‌هایی را که ارسال می‌کنید، امضا کنید.

مثال زیر یک فایل dsrdelete.json را با یک نقطه پایانی، شناسه‌ها و کلید عمومی تنظیم می‌کند:

{
    "endpoint": "https://www.doubleclick.net/iab-ddrf",
    "identifiers": [
        { "id": 1, "type": "ppid", "format": "plaintext" },
        { "id": 2, "type": "idfv", "format": "plaintext" },
        { "id": 3, "type": "pfpid_domain", "format": "plaintext" }
    ],
    "publicKey": [
        {
            "kty": "EC",
            "crv": "P-256",
            "x": "_OPPeKSEdi3_JEHla93vOGTx8VD01ozhyYxwQzYCVLs",
            "y": "_XHufu2A_hbN5Uj4Wm7JPHE7ly0_4cmqntmz93pweys",
            "kid": "yUa3wQ",
            "use": "sig",
            "alg": "ES256"
        }
    ],
    "vendorScriptRequirement": false
}

دریافت درخواست حذف اطلاعات

گوگل در صورت برآورده شدن همه شرایط زیر، درخواست‌های حذف داده‌ها را از ناشران به شما ارسال می‌کند:

  • شما یک فایل dsrdelete.json معتبر را در دامنه‌ای که در گوگل ثبت شده است، میزبانی می‌کنید.
  • ناشر درخواست حذف داده‌ها را برای یک شناسه به گوگل ارسال می‌کند.
  • گوگل تشخیص می‌دهد که شناسه ناشر ارسال‌شده در درخواست حذف داده‌ها با شما به اشتراک گذاشته شده است.

وقتی درخواست حذف داده‌ها را دریافت می‌کنید، مسئول حذف داده‌های مشخص شده هستید. همچنین باید درخواست حذف داده‌ها را به سایر شرکای داده که داده‌های ناشر شخص اول را با آنها به اشتراک گذاشته‌اید، ارسال کنید. گوگل از درخواست‌های حذف داده‌ها برای شناسه‌های زیر پشتیبانی می‌کند:

  • ppid : شناسه‌های ارائه شده توسط ناشر (PPID).
  • pfpid_domain : شناسه‌های شخص ثالث ناشر برای وب.
  • idfv : شناسه‌های شخص ثالث ناشر برای دستگاه‌های iOS.

گوگل درخواست حذف داده‌ها را به عنوان یک درخواست HTTP POST به نقطه پایانی مشخص شده در فایل dsrdelete.json شما ارسال می‌کند. بدنه درخواست حذف داده‌ها شامل یک JSON Web Token (JWT) است که از بخش‌های زیر تشکیل شده است:

  • یک سرآیند JOSE که الگوریتم رمزگذاری را توصیف می‌کند.
  • یک JWS Payload حاوی درخواست حذف.
  • امضای JWS برای تأیید صحت درخواست.

گوگل هدر، پیلود و امضا را در base64 کدگذاری می‌کند و این موارد را به صورت زیر قالب‌بندی می‌کند:

WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD.WEB_SAFE_BASE64_ENCODED_SIGNATURE

برای کسب اطلاعات بیشتر در مورد JWT های متمایز مورد استفاده در چارچوب حذف داده، به پیاده‌سازی JSON Web Token (JWT) مراجعه کنید. درخواست حذف داده‌ای که از گوگل دریافت می‌کنید، یک Request JWT (rqJWT) است که شامل Identity JWT (idJWT) است که ناشر هنگام درخواست حذف ارسال کرده است.

جزئیات اعتبارسنجی را در هدر پیدا کنید

هدر یک شیء JSON است که الگوریتمی را که باید برای تولید هش درخواست استفاده کنید، توصیف می‌کند، که برای تأیید صحت درخواست ضروری است. اگر صادرکننده چندین کلید خصوصی داشته باشد که می‌توانند برای تولید امضا استفاده کنند، هدر همچنین مشخص می‌کند که کدام یک از کلیدهای عمومی صادرکننده را می‌توانید برای تأیید امضا استفاده کنید.

مثال زیر یک هدر رمزگشایی شده است که نشان می‌دهد می‌توانید از الگوریتم RSA256 با شناسه کلید abc123 برای اعتبارسنجی امضا استفاده کنید:

{
    "typ": "JWT",
    "alg": "RS256",
    "kid": "abc123"
}

درخواست را تأیید کنید

می‌توانید تأیید کنید که گوگل درخواست‌های حذف داده‌ها را با کلید عمومی موجود در فایل dsrdelete.json گوگل ارسال کرده است. فایل dsrdelete.json گوگل در آدرس https://static.doubleclick.net/dsrdelete.json میزبانی می‌شود.

برای تأیید صحت درخواست حذف داده‌ها، مراحل زیر را دنبال کنید:

  1. هش هدر و بار داده را با استفاده از الگوریتم مشخص شده در هدر محاسبه کنید. داده‌های ارسالی به تابع هش شما باید از ساختار زیر استفاده کنند:

    WEB_SAFE_BASE64_ENCODED_HEADER.WEB_SAFE_BASE64_ENCODED_PAYLOAD
    
  2. از کلید عمومی مشخص شده در فایل dsrdelete.json صادرکننده برای رمزگشایی امضای رمزگشایی شده استفاده کنید.

  3. هشی که در مرحله اول ایجاد کرده‌اید را با مقدار رمزگشایی شده از امضا مقایسه کنید. اگر این موارد مطابقت داشته باشند، درخواست حذف داده‌ها معتبر است.

تجزیه‌ی درخواست حذف (payload)

پس از تأیید صحت درخواست حذف داده‌ها، باید payload را تجزیه کنید تا مشخص شود کدام شناسه را باید حذف کنید. payload رمزگشایی شده یک توکن rqJWT است. برای جزئیات بیشتر، به rqJWT: Requester “request” JWT مراجعه کنید.

مثال زیر یک payload رمزگشایی شده را به عنوان یک توکن rqJWT نشان می‌دهد و شامل پارامترهای اختیاری است:

{
    "optionalParameters": "{\"gamNetworkCode\":\"311057\"}",
    "sub": "{\n    \"identifierValue\": \"crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd\",\n    \"identifierType\": \"ppid\",\n    \"identifierFormat\": \"plaintext\"\n  }",
    "iat": 1756257951,
    "version": "1.0",
    "iss": "test_publisher",
    "idJWT": "eyJhbGciOiJFUzI1NiIsImtpZCI6IkVodWR1USIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0ZXN0X3B1Ymxpc2hlciIsInN1YiI6IntcbiAgICBcImlkZW50aWZpZXJWYWx1ZVwiOiBcImNydkJ0TGpMcU5VaWFmd1haaXl1a0xENFRmNm1NVVloQmRRYVBaMHBqeWRcIixcbiAgICBcImlkZW50aWZpZXJUeXBlXCI6IFwicHBpZFwiLFxuICAgIFwiaWRlbnRpZmllckZvcm1hdFwiOiBcInBsYWludGV4dFwiXG4gIH0iLCJpYXQiOjE3NTYyNTc5NTEsInZlcnNpb24iOiIxLjAifQ.Dh17fv1sxKMnkOa7HOWfVdsIYo8BBy2p9SkDTSfZoW6ypMdl_5wDYtUIYEfuX3n6UbwMoH0WVgGQnFQraMH6XQ"
}

درخواست حذف داده‌ها شامل sub است که حاوی یک رشته JSON است که نشان می‌دهد ناشر درخواست حذف یک PPID با مقدار crvBtLjLqNUiafwXZiyukLD4Tf6mMUYhBdQaPZ0pjyd را دارد. توکن rqJWT شامل توکن کدگذاری شده idJWT است. برای جزئیات بیشتر، به idJWT: Issuer “identifier” JWT مراجعه کنید.

درخواست حذف داده‌ها را منتشر کنید

شما باید درخواست حذف داده‌ها را به هر شریک داده‌ای که شناسه‌های مشخص‌شده را با آنها به اشتراک گذاشته‌اید، ارسال کنید. به عنوان مثال، اگر با پیشنهاد باز (Open Bidding) یکپارچه شده‌اید، باید درخواست حذف داده‌ها را به پیشنهاددهندگانی در صرافی خود که شناسه شخص اول با آنها به اشتراک گذاشته شده است، ارسال کنید. این فرآیند مستلزم آن است که شما یک توکن rqJWT برای شرکای داده ارسال کنید. توکن rqJWT باید حاوی شناسه‌های مربوطه باشد که بر اساس پیکربندی‌های موجود در فایل dsrdelete.json شریک داده، قالب‌بندی شده‌اند. علاوه بر این، توکن rqJWT باید شامل امضای شما باشد که با کلید خصوصی شما تولید شده است.

درخواست حذف داده‌ها را تأیید کنید

برای تأیید اینکه درخواست حذف داده‌ها را دریافت و بر اساس آن عمل کرده‌اید، یک JWT با عنوان «تأییدیه» (Acknowledgement JWT) به نقطه پایانی که گوگل در فایل dsrdelete.json مشخص کرده است، ارسال کنید. برای جزئیات بیشتر، به acJWT: Recipient “acknowledgement” JWT مراجعه کنید.

کد وضعیت HTTP پاسخ شما به نتیجه زیر بستگی دارد:

  • موفقیت : اگر درخواست با موفقیت دریافت، تجزیه و تحلیل و بر اساس آن عمل شده باشد، HTTP 202 را برمی‌گرداند.
  • شکست : اگر درخواست با موفقیت دریافت، تجزیه و تحلیل و بر اساس آن اقدام نشده باشد، HTTP 400 را برمی‌گرداند.

بدنه درخواست باید شامل یک توکن acJWT با یک payload باشد که فیلد raResultCode را با یک کد نتیجه عدد صحیح پر می‌کند. می‌توانید به صورت اختیاری متن توصیفی در مورد نتیجه در فیلد raResultString ارائه دهید. توکن acJWT باید شامل امضای شما باشد که با کلید خصوصی شما تولید شده است.

برای کسب اطلاعات بیشتر در مورد کدهای نتیجه پشتیبانی شده در چارچوب درخواست حذف داده، به کدهای نتیجه مراجعه کنید.

هدر توکن acJWT را بسازید

هدر را بر اساس تابع هش و کلید عمومی که قصد دارید گیرنده هنگام تأیید امضای شما از آن استفاده کند، پر کنید. هدر بدون کد در مثال زیر نشان می‌دهد که شما قصد دارید گیرنده از الگوریتم ES256 برای تولید هش استفاده کند و گیرنده باید هنگام رمزگشایی امضای شما از کلید عمومی با شناسه کلید EhuduQ از فایل dsrdelete.json شما استفاده کند.

{
    "alg": "ES256",
    "typ": "JWT",
    "kid": "EhuduQ"
}

ساخت پیلود توکن acJWT

بر اساس نتیجه درخواست حذف، payload را پر کنید و فیلد rqJWT را با شکل رمزگذاری شده توکن rqJWT که تأیید می‌کنید، پر کنید. مثال زیر یک فیلد raResultCode با مقدار 0 مشخص می‌کند تا نشان دهد که عملیات موفقیت‌آمیز بوده است:

{
    "version": "1.0",
    "jti": "965492b2-74e5-409a-90f4-f041902db05f",
    "raResultString": "",
    "iat": 1756408212,
    "iss": "doubleclick.net",
    "raResultCode": 0,
    "rqJWT": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkVodWR1USJ9.eyJvcHRpb25hbFBhcmFtZXRlcnMiOiJ7XCJnYW1OZXR3b3JrQ29kZVwiOlwiMzExMDU3XCJ9Iiwic3ViIjoie1xuICAgIFwiaWRlbnRpZmllclZhbHVlXCI6IFwiY3J2QnRMakxxTlVpYWZ3WFppeXVrTEQ0VGY2bU1VWWhCZFFhUFowcGp5ZFwiLFxuICAgIFwiaWRlbnRpZmllclR5cGVcIjogXCJwcGlkXCIsXG4gICAgXCJpZGVudGlmaWVyRm9ybWF0XCI6IFwicGxhaW50ZXh0XCJcbiAgfSIsImlhdCI6MTc1NjI1Nzk1MSwidmVyc2lvbiI6IjEuMCIsImlzcyI6InRlc3RfcHVibGlzaGVyIiwiaWRKV1QiOiJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SWtWb2RXUjFVU0lzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSjBaWE4wWDNCMVlteHBjMmhsY2lJc0luTjFZaUk2SW50Y2JpQWdJQ0JjSW1sa1pXNTBhV1pwWlhKV1lXeDFaVndpT2lCY0ltTnlka0owVEdwTWNVNVZhV0ZtZDFoYWFYbDFhMHhFTkZSbU5tMU5WVmxvUW1SUllWQmFNSEJxZVdSY0lpeGNiaUFnSUNCY0ltbGtaVzUwYVdacFpYSlVlWEJsWENJNklGd2ljSEJwWkZ3aUxGeHVJQ0FnSUZ3aWFXUmxiblJwWm1sbGNrWnZjbTFoZEZ3aU9pQmNJbkJzWVdsdWRHVjRkRndpWEc0Z0lIMGlMQ0pwWVhRaU9qRTNOVFl5TlRjNU5URXNJblpsY25OcGIyNGlPaUl4TGpBaWZRLkRoMTdmdjFzeEtNbmtPYTdIT1dmVmRzSVlvOEJCeTJwOVNrRFRTZlpvVzZ5cE1kbF81d0RZdFVJWUVmdVgzbjZVYndNb0gwV1ZnR1FuRlFyYU1INlhRIn0.zZnuUsUDzkARg31RzkhLOJCSXD5jPca8qff5IqyYrrRITgRgm29T__6gC3oOOK5RAcd_AFFYWzE8onx6Kj1w8A"
}