บริการเสนอราคาและประมูล (B&A) คือชุดบริการสําหรับผู้ซื้อและผู้ขายโฆษณาที่ทํางานในสภาพแวดล้อมการดําเนินการที่เชื่อถือได้ (TEE) เพื่ออำนวยความสะดวกในการประมูล Protected Audience (PA) คู่มือสําหรับนักพัฒนาซอฟต์แวร์นี้จะอธิบายวิธีที่ผู้ขายผสานรวมกับการประมูล PA ของ Chrome สําหรับ B&A
คำแนะนำแบบทีละขั้น
ขั้นตอนต่างๆ สรุปได้ดังนี้
- โทร
getInterestGroupAdAuctionData()
เพื่อรับเพย์โหลดที่เข้ารหัสจากเบราว์เซอร์ - โทรหา
fetch('https://your-ad-server.example')
และส่งคําขอการประมูลแบบรวมพร้อมเพย์โหลดที่เข้ารหัสไปยัง SAS - เรียกใช้การดำเนินการ
SelectAd()
ของ SFE จาก SAS เพื่อเรียกใช้การประมูล B&A - แสดงผลการประมูล B&A บนหน้าเว็บพร้อมกับแฮชของคำตอบ
- เรียก
runAdAuction()
ในเบราว์เซอร์เพื่อเรียกใช้การประมูล PA สำหรับผู้ขายรายเดียว โหมดผสม และผู้ขายหลายราย และส่งผลลัพธ์การประมูล B&A ฝั่งเซิร์ฟเวอร์ไปยังการเรียกใช้
รับข้อมูลการประมูลโฆษณาที่เข้ารหัส
โค้ด JavaScript ของผู้ขายในหน้าผู้เผยแพร่โฆษณาจะเรียกใช้ navigator.getInterestGroupAdAuctionData()
เพื่อรับข้อมูลที่จําเป็นสําหรับการประมูล B&A ฝั่งเซิร์ฟเวอร์
const adAuctionData = await navigator.getInterestGroupAdAuctionData({
seller: 'https://ssp.example', // Required
requestSize: 51200,
coordinatorOrigin: 'https://publickeyservice.pa.gcp.privacysandboxservices.com/',
perBuyerConfig: {
'https://dsp-x.example': { targetSize: 8192 },
'https://dsp-y.example': { targetSize: 8192 }
}
});
const { requestId, request } = adAuctionData;
ช่อง | คำอธิบาย |
---|---|
seller |
ต้องระบุ ต้นทางของผู้ขายที่ทำการประมูล ค่านี้ต้องตรงกับค่า seller ในการเรียกใช้ runAdAuction() ในภายหลัง
|
requestSize |
ไม่บังคับ กําหนดขนาดเพย์โหลดสูงสุดของข้อมูลผู้ซื้อทั้งหมด ดูข้อมูลเพิ่มเติมได้ที่ส่วนขนาดคำขอของคำอธิบาย |
perBuyerConfig |
ไม่บังคับ ตั้งค่าการกำหนดค่าสำหรับผู้ซื้อแต่ละราย รวมถึงควบคุมผู้ซื้อที่จะเข้าร่วมการประมูล B&A ด้วย
หากแหล่งที่มาของผู้ซื้อแสดงอยู่ใน |
targetSize |
ไม่บังคับหากตั้งค่า requestSize ไว้ ต้องระบุหากตั้งค่าต้นทางของผู้ซื้อใน perBuyerConfig แต่ไม่ได้ตั้งค่า requestSize กําหนดขนาดเพย์โหลดสูงสุดของข้อมูลของผู้ซื้อรายนั้น ดูข้อมูลเพิ่มเติมได้ที่ส่วนขนาดคำขอของคำอธิบาย |
coordinatorOrigin |
ไม่บังคับ แต่จะต้องระบุในท้ายที่สุด ค่าเริ่มต้นคือ https://publickeyservice.pa.gcp.privacysandboxservices.com เมื่อไม่ได้ตั้งค่าไว้ตั้งค่าผู้ประสานงานที่จะใช้ดึงข้อมูลคีย์สําหรับการเข้ารหัสเพย์โหลด ดูข้อมูลเพิ่มเติมได้ในส่วนผู้ประสานงานของคำอธิบาย |
เมื่อมีการเรียกใช้ เบราว์เซอร์จะอ่านกลุ่มความสนใจของผู้ซื้อที่แสดงใน perBuyerConfig
และเข้ารหัสข้อมูลผู้ซื้อ ข้อมูลผู้ซื้อนี้มีข้อมูลจากหลายเว็บไซต์ที่จะใช้ในการเสนอราคา และไม่สามารถถอดรหัสนอก TEE ได้ สําหรับการเพิ่มประสิทธิภาพเพย์โหลด จะมีเฉพาะชื่อกลุ่มความสนใจ คีย์สัญญาณการเสนอราคาที่เชื่อถือได้ และสัญญาณเบราว์เซอร์เท่านั้นที่รวมอยู่ในเพย์โหลด
ในออบเจ็กต์ข้อมูลการประมูลโฆษณาที่การเรียกใช้ getInterestGroupAdAuctionData()
ส่งคืน จะมีสตริง requestId
และอาร์เรย์ไบต์ request
ที่เข้ารหัส
ระบบจะใช้สตริง requestId
ในภายหลังเมื่อมีการเรียกใช้ runAdAuction()
เพื่อทำการประมูลในเบราว์เซอร์ให้เสร็จสมบูรณ์ ระบบจะส่งพายโหลด request
ที่เข้ารหัสไปยังบริการโฆษณาของผู้ขายโดยเป็นส่วนหนึ่งของคำขอการประมูลแบบรวม
ดูตัวอย่างการเรียกใช้นี้ได้ที่โค้ด JavaScript ของผู้ขายในแอปทดสอบในเครื่อง
ส่งคําขอการประมูลแบบรวมไปยัง SAS
คำขอการประมูลแบบรวมคือคำขอที่มีเพย์โหลดการประมูลตามบริบทแบบข้อความธรรมดาและเพย์โหลดการประมูล B&A ของ PA เพย์โหลดการประมูล B&A ของ PA คือข้อมูล request
ที่เข้ารหัสซึ่งเบราว์เซอร์สร้างขึ้นในการเรียกใช้ getInterestGroupAdAuctionData()
ระบบจะส่งคําขอนี้ไปยัง SAS ซึ่งจะจัดการการประมูลตามบริบทและการประมูล B&A ของ PA
fetch('https://ssp.example/ad-auction', {
method: 'POST',
adAuctionHeaders: true,
body: JSON.stringify({
contextualAuctionPayload: { somePayload },
protectedAudienceAuctionPayload: encodeBinaryData(request)
}),
});
หากต้องการส่งคําขอไปยัง SAS ระบบจะเรียกใช้ fetch()
จากหน้าเว็บดังนี้
- การเรียกใช้ต้องมีตัวเลือก
adAuctionHeaders: true
ซึ่งส่งสัญญาณให้เบราว์เซอร์ยืนยันการตอบกลับของการเรียกใช้นี้ในภายหลังเมื่อมีการเรียกใช้runAdAuction()
เพื่อทำการประมูลในเบราว์เซอร์ให้เสร็จสมบูรณ์ - ต้นทางของคำขอดึงข้อมูลต้องตรงกับต้นทาง
seller
ที่ระบุในการเรียกใช้getInterestGroupAdAuctionData()
และrunAdAuction()
เนื้อความของการเรียกใช้ประกอบด้วยข้อมูลต่อไปนี้
- เพย์โหลดการประมูลตามบริบทแบบข้อความธรรมดาที่ SAS จะใช้เพื่อเรียกใช้การประมูลตามบริบท
- น้ำหนักบรรทุกการประมูล Protected Audience ที่เข้ารหัสซึ่ง SAS จะส่งไปยัง SFE เพื่อเรียกใช้การประมูล B&A ฝั่งเซิร์ฟเวอร์
ดูตัวอย่างการเรียกใช้นี้ได้ที่โค้ด JavaScript ของผู้ขายในแอปทดสอบในเครื่อง
การเข้ารหัสและถอดรหัส Base64
เพย์โหลด request
ที่เข้ารหัสซึ่งแสดงผลจากการเรียกใช้ getInterestGroupAdAuctionData()
คืออินสแตนซ์ของ Uint8Array
ซึ่งเป็นประเภทข้อมูลที่ JSON จัดการไม่ได้ หากต้องการส่งอาร์เรย์ไบต์ในรูปแบบ JSON ให้ใช้การเข้ารหัส base64 กับข้อมูลไบนารีเพื่อแปลงเป็นสตริง
API เบราว์เซอร์ JavaScript มีฟังก์ชัน atob()
และ btoa()
ใน window
ซึ่งจะแปลงระหว่างข้อมูลไบนารีกับสตริง ASCII ที่เข้ารหัสฐาน 64 (atob
หมายถึง ASCII เป็นไบนารี และ btoa
หมายถึงไบนารีเป็น ASCII)
การเรียก btoa()
เพื่อเข้ารหัสข้อมูลไบนารีเป็นสตริงที่เข้ารหัส Base64 จะมีลักษณะดังนี้
function encodeBinaryData(data) {
return btoa(String.fromCharCode.apply(null, data));
}
ผลลัพธ์การประมูล B&A ที่เข้ารหัสซึ่งแสดงผลจากการเรียกใช้ fetch
นี้จะเข้ารหัส Base64 ด้วย คุณจึงต้องถอดรหัสกลับเป็นข้อมูลไบนารี เรียกใช้ atob()
เพื่อถอดรหัสสตริง ASCII ที่เข้ารหัสฐาน 64 เป็นข้อมูลไบนารี
function decodeBase64String(base64string) {
return new Uint8Array(
atob(base64string)
.split('')
.map((char) => char.charCodeAt(0))
);
}
อย่างไรก็ตาม สตริงที่เข้ารหัสฐาน 64 มักจะมีขนาดใหญ่กว่าข้อมูลเดิมประมาณ 33% หากต้องการปรับปรุงเวลาในการตอบสนองให้ดียิ่งขึ้น ให้ใช้รูปแบบอื่นที่ไม่ใช่ JSON เพื่อส่งข้อมูลไบนารี
โทรหา SelectAd
ของ SFE เพื่อเรียกใช้การประมูล B&A
เมื่อบริการโฆษณาของผู้ขายได้รับคําขอการประมูลแบบรวมจากหน้าเว็บ การประมูลตามบริบทจะทํางานก่อนเพื่อระบุผู้ชนะการประมูลตามบริบทและรวบรวมสัญญาณของผู้ซื้อเพื่อส่งไปยังการประมูล B&A ของ PA จากนั้นระบบจะเริ่มการประมูล B&A โดยการเรียกใช้การดำเนินการ SelectAd
ของ SFE จาก SAS พร้อมเพย์โหลดคำขอ โปรดทราบว่าระบบจะส่งต่อข้อมูลเมตาบางอย่างจากคำขอของหน้าเว็บไปยัง SAS ในขั้นตอนที่ 2 ไปยัง SFE
สร้างเพย์โหลด SelectAdRequest
คุณสามารถสร้างเพย์โหลดคำขอของคอล SelectAd
ดังนี้
const selectAdRequest = {
auction_config: {
seller: 'https://ssp.example',
auction_signals: '{"testKey":"someValue"}',
seller_signals: '{"testKey":"someValue"}',
buyer_list: [
'https://dsp-x.example',
'https://dsp-y.example',
],
per_buyer_config: {
'https://dsp-x.example': { buyer_signals: '{"testKey": "someValue"}' },
'https://dsp-y.example': { buyer_signals: '{"testKey": "someValue"}' },
},
},
client_type: 'CLIENT_TYPE_BROWSER',
protected_auction_ciphertext: decodeBase64string(request)
};
โปรดทราบว่าหากข้อมูลการประมูลโฆษณาที่เข้ารหัสจากเบราว์เซอร์ได้รับการเข้ารหัส Base64 จะต้องถอดรหัสกลับเป็นข้อมูลไบนารีหากส่งคําขอไปยัง SFE โดยใช้ gRPC หากส่งคําขอโดยใช้ HTTP ข้อมูลการประมูลโฆษณาที่เข้ารหัสจะยังคงอยู่ในรูปแบบที่เข้ารหัส Base64
หากต้องการดูช่องอื่นๆ ที่กําหนดไว้ในคําขอ SelectAd
โปรดดูคําจํากัดความของโปรโตของ SelectAdRequest
ตั้งค่าช่องผู้ขายระดับบนสุดสำหรับการประมูลแบบผสมและแบบคอมโพเนนต์
หากผู้ขายทำการประมูลแบบผสมหรือเข้าร่วมในฐานะผู้ขายคอมโพเนนต์ในการประมูลแบบผู้ขายหลายราย จะต้องกำหนดช่อง top_level_seller
ในคำขอ
หากคุณเป็นผู้ขายแบบผสม ค่า top_level_seller
คือต้นทางของคุณ
const selectAdRequest = {
auction_config: {
seller: 'https://ssp-mix.example',
top_level_seller: 'https://ssp-mix.example',
}
}
หากคุณเป็นผู้ขายคอมโพเนนต์ ค่า top_level_seller
คือผู้ขายระดับบนสุดของการประมูลแบบผู้ขายหลายราย
const selectAdRequest = {
auction_config: {
seller: 'https://ssp-mix.example',
top_level_seller: 'https://ssp-top.example',
}
}
โทรหา SelectAd
ของ SFE
การเรียก SFE จาก SAS ทำได้โดยใช้ gRPC หรือ HTTP
การเรียกใช้ gRPC
คำขอ gRPC ไปยัง SFE จะมีลักษณะดังต่อไปนี้โดยใช้ Express ใน Node ที่มีไคลเอ็นต์ gRPC
import grpc from '@grpc/grpc-js';
// Load proto definition
const packageDefinition = protoLoader.loadSync(protoPath, { keepCase: true, enums: String });
const {
privacy_sandbox: {
bidding_auction_servers: { SellerFrontEnd }
}
} = grpc.loadPackageDefinition(packageDefinition);
// Instantiate the gRPC client
const sfeGrpcClient = new SellerFrontEnd('192.168.84.104:50067', grpc.credentials.createInsecure());
// Send SelectAd request
sfeGrpcClient.selectAd(selectAdRequest,(error, response) => {
// Handle SFE response
});
ดูคำจำกัดความโปรโตคอลสำหรับไคลเอ็นต์ SFE ได้ใน ที่เก็บแอปการทดสอบในเครื่อง
การเรียก HTTP ไปยังพร็อกซี Envoy
ระบบจะส่งคําขอ HTTP POST ไปยัง SFE ในเส้นทาง /v1/selectAd
และมีลักษณะดังต่อไปนี้
fetch('https://ssp-ba.example/sfe/v1/selectAd', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(selectAdRequest),
});
ส่งต่อข้อมูลเมตา
คุณควรเพิ่มข้อมูลเมตาต่อไปนี้จากการเรียก SAS ของหน้าเว็บลงในSelectAd
ของ SAS ที่เรียก SFE
Accept-Language
User-Agent
- ที่อยู่ IP
เมื่อส่งข้อมูลเมตาไปยัง SFE จะต้องใช้ส่วนหัวที่ไม่เป็นมาตรฐานต่อไปนี้เนื่องจาก gRPC อาจแก้ไขส่วนหัว User-Agent
X-Accept-Language
X-User-Agent
X-BnA-Client-IP
ต่อไปนี้คือตัวอย่างวิธีส่งต่อข้อมูลเมตาโดยใช้ Express ใน Node ด้วยไคลเอ็นต์ gRPC
sellerAdService.post('/ad-auction', (req, res) => {
// …
const metadata = new grpc.Metadata();
metadata.add('X-Accept-Language', req.header('Accept-Language'));
metadata.add('X-User-Agent', req.header('User-Agent'));
metadata.add('X-BnA-Client-IP', req.ip);
const sfeGrpcClient = createSfeGrpcClient();
sfeGrpcClient.selectAd(selectAdRequest, metadata, callbackFn);
})
ต่อไปนี้คือตัวอย่างการส่งต่อข้อมูลเมตาโดยใช้การเรียก HTTP
sellerAdService.post('/ad-auction', (req, res) => {
// …
fetch('https://ssp-ba.example/sfe/v1/selectAd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Accept-Language': req.header('Accept-Language'),
'X-User-Agent': req.header('User-Agent'),
'X-BnA-Client-IP': req.ip
},
body: JSON.stringify(selectAdRequest)
});
})
การประมูลของผู้ขายหลายรายที่เซิร์ฟเวอร์จัดการ
หากคุณเป็นผู้ขายระดับบนสุดที่ใช้การประมูลแบบหลายผู้ขายที่จัดการโดยเซิร์ฟเวอร์ ระบบจะเรียกใช้ GetComponentAuctionCiphertexts
กับ SFE ก่อนที่จะเรียกใช้ SelectAd
การตอบกลับจะมีเพย์โหลดการประมูลคอมโพเนนต์ที่เข้ารหัสอีกครั้งซึ่งส่งไปยังบริการโฆษณาของผู้ขายคอมโพเนนต์ ระบบจะส่งผลการประมูลโฆษณา B&A ของคอมโพเนนต์ที่แสดงผลไปยังการเรียก SelectAd
ของ SFE ของผู้ขายระดับบนสุด
ดูข้อมูลเพิ่มเติมได้ในคำอธิบายสำหรับผู้ขายหลายรายบน GitHub
แสดงผลลัพธ์การประมูล B&A กลับไปยังหน้าเว็บ
หลังจากการประมูล B&A สิ้นสุดลง ระบบจะส่งผลการประมูลที่เข้ารหัสกลับไปยัง SAS และ SAS จะตอบกลับคําขอการประมูลแบบรวมจากหน้าเว็บในขั้นตอนที่ 2 ด้วยผลการประมูลที่เข้ารหัส ในการตอบกลับ SAS ไปยังหน้าเว็บ ระบบจะตั้งค่าแฮช SHA-256 ที่เข้ารหัส base64url ของผลการประมูลที่เข้ารหัสในส่วนหัวการตอบกลับ Ad-Auction-Result
เบราว์เซอร์จะใช้แฮชนี้เพื่อยืนยันเพย์โหลดเมื่อการประมูลในไคลเอ็นต์สิ้นสุดลง
การสร้างแฮช SHA-256 ที่เข้ารหัสฐาน 64 ใน Node จะมีลักษณะดังนี้
import { createHash } from 'crypto';
createHash('sha256')
.update(binaryData, 'base64')
.digest('base64url');
การแนบแฮชในส่วนหัวของคำตอบและแสดงผลลัพธ์การประมูลในหน้าเว็บจะมีลักษณะดังนี้
sellerAdService.post('/ad-auction', (req, res) => {
// …
sfeGrpcClient.selectAd(selectAdRequest, metadata, (error, response) => {
const { auction_result_ciphertext } = response;
const ciphertextShaHash = createHash('sha256')
.update(auction_result_ciphertext, 'base64')
.digest('base64url');
res.set('Ad-Auction-Result', ciphertextShaHash);
res.json({
protectedAudienceAuctionResult: encodeBinaryData(auction_result_ciphertext),
contextualAuctionResult: getContextualAuctionResult()
});
});
})
เนื่องจากเป็นการตอบกลับคําขอการประมูลแบบรวมที่ส่งมาจากหน้าเว็บในขั้นตอนที่ 2 ผลการประมูลตามบริบทจึงรวมอยู่ในคําตอบด้วย
คุณสามารถใส่แฮชหลายรายการใน Ad-Auction-Result
ได้โดยใส่ส่วนหัวซ้ำหรือแยกแฮช ส่วนหัวคำตอบ 2 รายการต่อไปนี้มีความหมายเหมือนกัน
Ad-Auction-Result: ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0=,9UTB-u-WshX66Xqz5DNCpEK9z-x5oCS5SXvgyeoRB1k=
Ad-Auction-Result: ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0=
Ad-Auction-Result: 9UTB-u-WshX66Xqz5DNCpEK9z-x5oCS5SXvgyeoRB1k=
ดูตัวอย่างการเรียกนี้ได้ที่โค้ดเซิร์ฟเวอร์ผู้ขายของแอปทดสอบในเครื่อง
โทรหา runAdAuction()
เพื่อทำการประมูลให้เสร็จสมบูรณ์
การตอบกลับการประมูลแบบรวมที่ส่งคืนจาก SAS จะรวมผลการประมูล B&A ที่เข้ารหัส ระบบจะส่งพายโหลดนี้ไปยังการเรียก runAdAuction()
เพื่อทำการประมูลในเบราว์เซอร์ให้เสร็จสิ้น ระบบจะส่งค่า requestId
จากคอล getInterestGroupAdAuctionData()
ในขั้นตอนที่ 1 ไปยังการประมูลด้วย
// Get the encrypted ad auction data (Step #1)
const { requestId, request } = navigator.getInterestGroupAdAuctionData(adAuctionDataConfig)
// Send unified auction request (Step #2)
const response = await fetch('https://ssp-ba.example/ad-auction', {
method: 'POST',
body: JSON.stringify({
adAuctionRequest: encodeBinaryData(request),
}),
});
const { protectedAudienceAuctionResult } = await response.json();
// Finish the auction in the browser
await navigator.runAdAuction({
// pass in "requestId" and "protectedAudienceAuctionResult"
// the config structure will differ based on the auction configuration
});
โครงสร้างของการกำหนดค่าการประมูลที่ส่งไปยังการเรียก runAdAuction()
จะแตกต่างกันไปตามการกำหนดค่าการประมูลที่ผู้ขายเลือก
การประมูลของผู้ขายรายเดียว
สำหรับการประมูล B&A ของผู้ขายรายเดียว การกําหนดค่าการประมูลของคําเรียก runAdAuction()
จะสร้างขึ้นดังนี้
await navigator.runAdAuction({
seller: 'https://ssp-ba.example',
requestId,
serverResponse: protectedAudienceAuctionResult,
});
ช่อง requestId
จะยอมรับ requestId
ที่แสดงผลจากการเรียกใช้ getInterestGroupAdAuctionData()
ฟิลด์ serverResponse
ยอมรับอาร์เรย์ไบต์ของการประมูล B&A ที่ทำงานในขั้นตอนที่ 3
ดูตัวอย่างการเรียกใช้นี้ได้ที่โค้ด JavaScript ของผู้ขายในแอปทดสอบในเครื่อง
การประมูลแบบผสม
สำหรับการประมูล B&A แบบผสมที่ทั้งผู้ซื้อในอุปกรณ์และผู้ซื้อ B&A เข้าร่วมได้ การกําหนดค่าการประมูลของคําเรียก runAdAuction()
จะสร้างขึ้นดังนี้
await navigator.runAdAuction({
seller: 'https://ssp-mix.example',
decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
componentAuctions: [
// B&A auction result
{
seller: 'https://ssp-mix.example',
requestId,
serverResponse: protectedAudienceAuctionResult,
},
// On-device auction config
{
seller: 'https://ssp-mix.example',
decisionLogicURL: 'https://ssp-mix.example/on-device-score-ad.js',
interestGroupBuyers: [
'https://dsp-a.example', // On-device buyer
'https://dsp-a.example', // On-device buyer
],
},
]
});
ระบบจะส่งผลลัพธ์การประมูล B&A และการกำหนดค่าการประมูลในอุปกรณ์ไปยังช่อง componentAuctions
เพื่อให้การประมูลแบบผสมทำงานได้ง่ายขึ้น ในการประมูลแบบผสม ค่า seller
จะเหมือนกันทั้งสำหรับการกําหนดค่าระดับบนสุดและการกําหนดค่าคอมโพเนนต์
ดูตัวอย่างการเรียกใช้นี้ได้ที่โค้ด JavaScript ของผู้ขายในแอปทดสอบในเครื่อง
การประมูลกับผู้ขายหลายราย
หากคุณเป็นผู้ขายระดับบนสุดที่เรียกใช้การประมูลแบบหลายผู้ขายซึ่งจัดระเบียบโดยอุปกรณ์ ผู้ขายคอมโพเนนต์แต่ละรายจะส่งผลการประมูล B&A และการกำหนดค่าการประมูลในอุปกรณ์
await navigator.runAdAuction({
seller: 'https://ssp-top.example',
decisionLogicURL: 'https://ssp-top.example/score-ad.js',
componentAuctions: [
// SSP-BA's B&A-only auction result
{
seller: 'https://ssp-ba.example',
requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [193, 120, 4, …] // Encrypted B&A auction result
},
// SSP-MIX's B&A auction result
{
seller: 'https://ssp-mix.example',
requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [133, 20, 4, …] // Encrypted B&A auction result
}.
// SSP-MIX's on-device auction config
{
seller: 'https://ssp-mix.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
}
// SSP-OD's on-device auction config
{
seller: 'https://ssp-od.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-od.example/score-ad.js',
}
]
})
ดูตัวอย่างการเรียกใช้นี้ได้ที่โค้ด JavaScript ของผู้ขายในแอปทดสอบในเครื่อง
ขั้นตอนถัดไป
หลังจากอ่านคู่มือนี้แล้ว คุณสามารถทำตามขั้นตอนต่อไปนี้
ดูข้อมูลเพิ่มเติม
- หากต้องการทําความเข้าใจเพิ่มเติม โปรดดูคําอธิบายต่อไปนี้ใน GitHub
- ดูข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรม B&A สําหรับเว็บ
- ทดสอบ Protected Audience ด้วย B&A โดยทําตามCodelab การทดสอบในพื้นที่จากต้นทางถึงปลายทาง
หากมีคำถาม
- หากมีคำถามเกี่ยวกับบริการเสนอราคาและบริการประมูล โปรดเปิดปัญหาในที่เก็บบริการเสนอราคาและบริการประมูล
- หากมีคำถามทั่วไปเกี่ยวกับ Privacy Sandbox โปรดเปิดปัญหาในที่เก็บ privacy-sandbox-dev-support