Tìm hiểu cách hoạt động của các mã nhận dạng báo cáo trong phiên đấu giá Protected Audience
Tổng quan
Giá trị nhận dạng báo cáo là giá trị nhận dạng được liên kết với một quảng cáo, có thể dùng để tạo giá thầu, tính điểm giá thầu và báo cáo. Người mua cung cấp các mã báo cáo trong cấu hình nhóm lợi ích và các mã này sẽ có sẵn trong generateBid(), scoreAd(), reportResult() và reportWin() trong nhiều điều kiện được thảo luận trong hướng dẫn này.
Giá trị nhận dạng báo cáo cho phép bạn báo cáo một giá trị nhận dạng cho quảng cáo, đồng thời cho phép các trường hợp sử dụng như ưu đãi.
Có 3 mã nhận dạng báo cáo thuộc 2 loại:
- Mã nhận dạng báo cáo không chọn được
buyerReportingId(một chuỗi)buyerAndSellerReportingId(một chuỗi)
- Mã nhận dạng có thể chọn trong báo cáo
selectableBuyerAndSellerReportingIds(một mảng chuỗi)
Các mã nhận dạng trong báo cáo hoạt động theo cách khác nhau, tuỳ thuộc vào việc bạn có sử dụng mã nhận dạng trong báo cáo có thể chọn hay không. Khi chỉ sử dụng mã nhận dạng báo cáo không chọn được, những mã nhận dạng đó sẽ chỉ có trong các hàm báo cáo. Khi bạn sử dụng mã nhận dạng có thể chọn trong báo cáo, cùng với mã nhận dạng không thể chọn trong báo cáo (nếu cần), thì tất cả mã nhận dạng được xác định cũng sẽ có trong generateBid() và scoreAd().
Mã báo cáo không chọn được
buyerReportingId và buyerAndSellerReportingId là các mã nhận dạng báo cáo không thể chọn được xác định trong cấu hình nhóm mối quan tâm, có sẵn trong các hàm báo cáo của người mua và người bán. Các hàm báo cáo của người mua và người bán sẽ chỉ chạy cho quảng cáo thắng cuộc và các hàm này sẽ nhận được mã báo cáo được xác định cho quảng cáo thắng cuộc đó.
Khi được dùng mà không có mã báo cáo có thể chọn, hàm báo cáo của người mua sẽ nhận được buyerReportingId hoặc buyerAndSellerReportingId tuỳ thuộc vào hành vi ghi đè và hàm báo cáo của người bán sẽ nhận được buyerAndSellerReportingId. Nếu cả buyerReportingId và buyerAndSellerReportingId đều không được xác định trong cấu hình nhóm lợi ích, thì hàm reportWin() sẽ nhận được tên nhóm lợi ích (interestGroupName) của giá thầu chiến thắng.
Bạn không thể chọn mã nhận dạng bên trong generateBid() và scoreAd() nếu không sử dụng mã nhận dạng báo cáo có thể chọn.
Mã nhận dạng báo cáo trong nhóm mối quan tâm
Người mua xác định các mã báo cáo cho từng quảng cáo trong một nhóm mối quan tâm:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
// buyerAndSellerReportingId goes to the buyer and seller reporting functions
buyerAndSellerReportingId: 'bsrid123',
// buyerReportingId is defined here as an example, but
// is not used due to the overwrite rules described later
buyerReportingId: 'brid123',
}]
});
Báo cáo của người bán
Trong giai đoạn báo cáo của người bán, giá trị buyerAndSellerReportingId sẽ có sẵn cho reportResult():
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
Trước khi mã nhận dạng có sẵn trong reportResult(), mã nhận dạng này sẽ được kiểm tra tính ẩn danh k-anonymity với chủ sở hữu nhóm mối quan tâm, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025). Nếu không phải là k-ẩn danh, hàm reportResult() vẫn sẽ chạy, nhưng giá trị mã nhận dạng báo cáo sẽ không có trong hàm.
Báo cáo của người mua
Trong giai đoạn báo cáo của người mua trong phiên đấu giá, một mã báo cáo sẽ có sẵn cho reportWin(). Nếu bạn xác định nhiều mã báo cáo trong nhóm mối quan tâm, thì quy tắc ghi đè sẽ được áp dụng trong đó buyerAndSellerReportingId ghi đè buyerReportingId:
- Nếu bạn xác định cả
buyerAndSellerReportingIdvàbuyerReportingId, thìbuyerAndSellerReportingIdsẽ ghi đèbuyerReportingIdvàbuyerAndSellerReportingIdsẽ có sẵn bên trongreportWin(). - Nếu bạn chỉ xác định
buyerReportingId, thìbuyerReportingIdsẽ có sẵn. - Nếu bạn không xác định
buyerAndSellerReportingIdvàbuyerReportingId, thìinterestGroupNamesẽ có sẵn.
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
Giá trị nhận dạng báo cáo có trong reportWin() sẽ được kiểm tra tính ẩn danh k với chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025). Nếu không vượt qua được quy trình kiểm tra tính ẩn danh k, thì reportWin() vẫn sẽ chạy, nhưng giá trị mã nhận dạng báo cáo sẽ không có trong hàm.
Chỉ buyerReportingId được xác định
Nếu chỉ có buyerReportingId được xác định trong cấu hình nhóm đối tượng có cùng mối quan tâm:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
}]
});
Sau đó, buyerReportingId sẽ có trong reportWin():
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
} = browserSignals;
}
Trước khi có sẵn cho reportWin(), buyerReportingId sẽ được kiểm tra tính ẩn danh k với chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025).
Chỉ buyerAndSellerReportingId được xác định
Nếu chỉ có buyerAndSellerReportingId được xác định trong cấu hình nhóm đối tượng có cùng mối quan tâm:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerAndSellerReportingId: 'bsrid123',
}]
});
Sau đó, buyerAndSellerReportingId sẽ có trong reportWin():
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
Trước khi có sẵn cho reportWin(), buyerAndSellerReportingId sẽ được kiểm tra tính ẩn danh k với chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025).
Cả buyerAndSellerReportingId và buyerReportingId đều được xác định
Nếu cả buyerAndSellerReportingId và buyerReportingId đều được xác định trong cấu hình nhóm mối quan tâm:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
}]
});
Sau đó, chỉ có buyerAndSellerReportingId có sẵn bên trong reportWin() do hành vi ghi đè:
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
Trước khi có sẵn cho reportWin(), buyerAndSellerReportingId sẽ được kiểm tra tính ẩn danh k với chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025).
Bạn chưa xác định buyerAndSellerReportingId hoặc buyerReportingId
Nếu không có mã nhận dạng báo cáo nào được xác định trong cấu hình nhóm mối quan tâm:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
}]
});
Sau đó, nhóm đối tượng có cùng mối quan tâm name sẽ có trong reportWin():
function reportWin(..., browserSignals, ...) {
const {
interestGroupName, // 'example-interest-group'
} = browserSignals;
}
Trước khi có sẵn cho reportWin(), tên nhóm lợi ích (interestGroupName) sẽ được kiểm tra tính ẩn danh k với chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025).
Mã báo cáo có thể chọn
Các mã báo cáo có thể chọn cho phép người mua chọn một mã nhận dạng trong quá trình tạo giá thầu và trình duyệt cung cấp giá trị đã chọn cho scoreAd() và các hàm báo cáo. Giá trị selectableBuyerAndSellerReportingIds (một mảng gồm các chuỗi) được cung cấp cho generateBid() và người mua có thể trả về một mã nhận dạng đã chọn dưới dạng selectedBuyerAndSellerReportingId.
Các hàm generateBid() và scoreAd() sẽ chạy cho từng quảng cáo được xác định trong cấu hình nhóm mối quan tâm và nhận mã nhận dạng báo cáo cho từng quảng cáo. Các hàm báo cáo của người mua và người bán sẽ chỉ chạy cho quảng cáo thắng cuộc và các hàm này sẽ nhận được mã báo cáo được xác định cho quảng cáo thắng cuộc đó.
Khi mã nhận dạng báo cáo không chọn được được dùng cùng với mã nhận dạng báo cáo chọn được, hành vi của các mã này sẽ thay đổi so với quy trình được mô tả trong phần trước. Không giống như hành vi ban đầu của các mã nhận dạng trong báo cáo không chọn được chỉ có trong các hàm báo cáo, các mã nhận dạng trong báo cáo chọn được cho phép các mã nhận dạng trong báo cáo không chọn được xuất hiện trong cả generateBid() và scoreAd().
Nhóm đối tượng có cùng mối quan tâm
Trường mã báo cáo có thể chọn – selectableBuyerAndSellerReportingIds – là một mảng các chuỗi do người mua xác định trong nhóm lợi ích cho một quảng cáo. Bạn cũng có thể xác định các mã báo cáo không thể chọn cùng với các mã báo cáo có thể chọn:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
selectableBuyerAndSellerReportingIds: ['sbsrid1', 'sbsrid2', 'sbsrid3']
}]
});
Tạo giá thầu của người mua
Nếu selectableBuyerAndSellerReportingIds được xác định trong cấu hình nhóm mối quan tâm, thì mã này sẽ có trong generateBid() cùng với các mã báo cáo khác đã được xác định.
function generateBid(interestGroup, ...) {
const [{
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectableBuyerAndSellerReportingIds // ['sbsrid1', 'sbsrid2', 'sbsrid3']
}] = interestGroup.ads;
return {
bid: 1,
render: 'https://buyer.example/ad.html',
selectedBuyerAndSellerReportingId: 'sbsrid2' // Buyer returns the selected ID
};
}
Người mua có thể chọn một trong các mã nhận dạng trong mảng selectableBuyerAndSellerReportingIds trong generateBid() và trả về mã nhận dạng đã chọn dưới dạng selectedBuyerAndSellerReportingId. Giá thầu sẽ bị từ chối nếu giá trị đã chọn không nằm trong mảng selectableBuyerAndSellerReportingIds. Nếu selectableBuyerAndSellerReportingIds được xác định trong cấu hình nhóm mối quan tâm và người mua không trả về selectedBuyerAndSellerReportingId từ generateBid(), thì các mã nhận dạng báo cáo sẽ quay lại hành vi được mô tả cho mã nhận dạng báo cáo không chọn được.
Giá thầu có giá trị được trả về cho selectedbuyerAndSellerReportingId chỉ có thể giành chiến thắng trong phiên đấu giá nếu giá trị của selectedbuyerAndSellerReportingId được ẩn danh cùng với buyerAndSellerReportingId (nếu có), buyerReportingId (nếu có), chủ sở hữu nhóm lợi ích, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được kiểm tra cho đến ít nhất là quý 1 năm 2025).
Tính điểm quảng cáo của người bán
Đối với người bán, selectedBuyerAndSellerReportingId do người mua trả về từ generateBid() sẽ có trong scoreAd(), cùng với buyerAndSellerReportingId nếu được xác định trong cấu hình nhóm lợi ích.
function scoreAd(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId, // 'sbsrid2'
} = browserSignals;
// ...
}
Báo cáo của người bán
Đối với báo cáo của người bán, selectedBuyerAndSellerReportingId do người mua trả về từ generateBid() sẽ có trong reportResult(), cùng với buyerAndSellerReportingId, nếu được xác định trong nhóm mối quan tâm.
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
Nếu selectableBuyerAndSellerReportingIds được xác định trong cấu hình nhóm mối quan tâm và selectedBuyerAndSellerReportingId được trả về từ generateBid(), thì giá thầu đó không thể thắng phiên đấu giá trừ phi selectedBuyerAndSellerReportingId và buyerAndSellerReportingId (nếu có) là k-ẩn danh với chủ sở hữu nhóm mối quan tâm, URL tập lệnh đặt giá thầu, URL hiển thị và kích thước quảng cáo (kích thước quảng cáo sẽ không được đưa vào quy trình kiểm tra này cho đến ít nhất là quý 1 năm 2025) và reportResult() sẽ không được thực thi cho giá thầu đó. Do đó, nếu reportResult() được gọi bằng một giá trị cho selectedBuyerAndSellerReportingId, thì có nghĩa là các mã nhận dạng báo cáo đã vượt qua quy trình kiểm tra k-ẩn danh và tất cả mã nhận dạng báo cáo được xác định sẽ có sẵn trong reportResult().
Báo cáo của người mua
Nếu selectableBuyerAndSellerReportingIds được xác định trong cấu hình nhóm mối quan tâm và selectedBuyerAndSellerReportingId được trả về từ generateBid(), thì tất cả mã nhận dạng báo cáo được xác định trong cấu hình nhóm mối quan tâm sẽ có sẵn. Xin lưu ý rằng tương tự như báo cáo của người bán, nếu các mã báo cáo không phải là k-ẩn danh, thì chúng không thể thắng phiên đấu giá và reportWin() sẽ không chạy cho giá thầu đó.
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
Quy tắc ghi đè
Sau đây là nội dung tóm tắt các quy tắc ghi đè cho cả mã báo cáo không chọn được và mã báo cáo chọn được. Trình duyệt sẽ xác định selectableBuyerAndSellerReportingIds, buyerAndSellerReportingId, buyerReportingId và tên nhóm lợi ích nào được truyền đến reportWin() theo logic sau:
- Nếu
selectedBuyerAndSellerReportingIdđược trả về từ một giá thầu, thìselectedBuyerAndSellerReportingId,buyerAndSellerReportingId(nếu được xác định trong nhóm sở thích) vàbuyerReportingId(nếu được xác định trong nhóm sở thích) đều có sẵn để báo cáo. - Nếu
buyerAndSellerReportingIdđược xác định trong nhóm mối quan tâm, thì chỉbuyerAndSellerReportingIdmới có sẵn để báo cáo. - Nếu
buyerReportingIdđược xác định trong nhóm mối quan tâm, thì chỉbuyerReportingIdmới có sẵn để báo cáo. - Nếu không, bạn chỉ có thể báo cáo nhóm mối quan tâm
name.
Bảng sau đây mô tả hành vi ghi đè:
| Mã nhận dạng báo cáo có được xác định trong cấu hình nhóm mối quan tâm không? | Có mã báo cáo | |||
selectableBuyerAnd
|
buyerAndSeller
|
buyerReportingId
|
reportWin()
|
reportResult()
|
| Có, và đã chọn trong generateBid()
|
Không bắt buộc | Không bắt buộc |
1) selectedBuyerAnd2) buyerAndSeller (nếu được xác định)3) buyerReportingId (nếu được xác định)
|
1) selectedBuyerAnd2) buyerAndSeller (nếu được xác định) |
| Không hoặc chưa chọn trong generateBid() |
Có | Bị bỏ qua | buyerAndSeller |
buyerAndSeller |
| Không hoặc chưa chọn trong generateBid() |
Không | Có | buyerReportingId |
Không có |
| Không hoặc chưa chọn trong generateBid() |
Không | Không | interestGroupName |
Không có |
Tương tác và chia sẻ ý kiến phản hồi
- Để tìm hiểu thêm về mã nhận dạng báo cáo, hãy xem phần Mã nhận dạng báo cáo trong tài liệu giải thích về Protected Audience.
- GitHub: Đặt câu hỏi và theo dõi cuộc thảo luận trong phần vấn đề trên kho lưu trữ API.
- W3C: Thảo luận về các trường hợp sử dụng trong ngành trong cuộc gọi WICG.
- Thông báo: Tham gia hoặc xem danh sách gửi thư.
- Hỗ trợ nhà phát triển Hộp cát về quyền riêng tư: Đặt câu hỏi và tham gia thảo luận trên kho lưu trữ Hỗ trợ nhà phát triển Hộp cát về quyền riêng tư.
- Chromium: Báo cáo lỗi Chromium để đặt câu hỏi về việc triển khai có sẵn để kiểm thử trong Chrome.