সার্ভার-সাইড যাচাইকরণ কলব্যাক হল URL অনুরোধ, যার কোয়েরি প্যারামিটারগুলি Google দ্বারা প্রসারিত করা হয়, যা Google দ্বারা একটি বহিরাগত সিস্টেমে পাঠানো হয় যাতে এটি জানানো হয় যে কোনও ব্যবহারকারীকে পুরস্কৃত বা পুরস্কৃত ইন্টারস্টিশিয়াল বিজ্ঞাপনের সাথে ইন্টারঅ্যাক্ট করার জন্য পুরস্কৃত করা উচিত। পুরস্কৃত SSV (সার্ভার-সাইড যাচাইকরণ) কলব্যাকগুলি ব্যবহারকারীদের পুরস্কৃত করার জন্য ক্লায়েন্ট-সাইড কলব্যাকের স্পুফিং থেকে সুরক্ষার একটি অতিরিক্ত স্তর প্রদান করে।
এই নির্দেশিকাটি আপনাকে দেখায় যে কীভাবে Tink Java Apps থার্ড-পার্টি ক্রিপ্টোগ্রাফিক লাইব্রেরি ব্যবহার করে পুরস্কৃত SSV কলব্যাক যাচাই করতে হয় যাতে কলব্যাকের কোয়েরি প্যারামিটারগুলি বৈধ মান নিশ্চিত করা যায়। যদিও এই নির্দেশিকার উদ্দেশ্যে Tink ব্যবহার করা হয়, আপনার কাছে ECDSA সমর্থন করে এমন যেকোনো থার্ড-পার্টি লাইব্রেরি ব্যবহার করার বিকল্প রয়েছে। আপনি AdMob UI-তে টেস্টিং টুল ব্যবহার করে আপনার সার্ভার পরীক্ষা করতে পারেন।
পূর্বশর্ত
- আপনার বিজ্ঞাপন ইউনিটে পুরস্কৃত সার্ভার-সাইড যাচাইকরণ সক্ষম করুন।
Tink জাভা অ্যাপস লাইব্রেরি থেকে RewardedAdsVerifier ব্যবহার করুন
 Tink Java Apps GitHub রিপোজিটরিতে একটি RewardedAdsVerifier হেল্পার ক্লাস অন্তর্ভুক্ত রয়েছে যা একটি rewarded SSV কলব্যাক যাচাই করার জন্য প্রয়োজনীয় কোড কমাতে সাহায্য করে। এই ক্লাসটি ব্যবহার করে আপনি নিম্নলিখিত কোড সহ একটি কলব্যাক URL যাচাই করতে সক্ষম হবেন।
RewardedAdsVerifier verifier = new RewardedAdsVerifier.Builder()
    .fetchVerifyingPublicKeysWith(
        RewardedAdsVerifier.KEYS_DOWNLOADER_INSTANCE_PROD)
    .build();
String rewardUrl = ...;
verifier.verify(rewardUrl);
 যদি verify() পদ্ধতিটি কোনও ব্যতিক্রম না করেই কার্যকর হয়, তাহলে কলব্যাক URLটি সফলভাবে যাচাই করা হয়েছে। ব্যবহারকারীকে পুরস্কৃত করা বিভাগে ব্যবহারকারীদের কখন পুরস্কৃত করা উচিত সে সম্পর্কে সর্বোত্তম অনুশীলনের বিবরণ দেওয়া হয়েছে। পুরস্কৃত SSV কলব্যাক যাচাই করার জন্য এই ক্লাস দ্বারা সম্পাদিত পদক্ষেপগুলির একটি ভাঙ্গনের জন্য, আপনি পুরস্কৃত SSV এর ম্যানুয়াল যাচাইকরণ বিভাগটি পড়তে পারেন।
SSV কলব্যাক প্যারামিটার
সার্ভার-সাইড যাচাইকরণ কলব্যাকগুলিতে কোয়েরি প্যারামিটার থাকে যা পুরস্কৃত বিজ্ঞাপনের ইন্টারঅ্যাকশন বর্ণনা করে। প্যারামিটারের নাম, বিবরণ এবং উদাহরণের মান নীচে তালিকাভুক্ত করা হয়েছে। প্যারামিটারগুলি বর্ণানুক্রমিকভাবে পাঠানো হয়।
| প্যারামিটারের নাম | বিবরণ | উদাহরণ মান | 
|---|---|---|
| বিজ্ঞাপন_নেটওয়ার্ক | এই বিজ্ঞাপনটি পূরণকারী বিজ্ঞাপন উৎসের বিজ্ঞাপন উৎস শনাক্তকারী। আইডি মানের সাথে সম্পর্কিত বিজ্ঞাপন উৎসের নামগুলি বিজ্ঞাপন উৎস শনাক্তকারী বিভাগে তালিকাভুক্ত করা হয়েছে। | ১৯৫৩৫৪৭০৭৩৫২৮০৯০৩২৫ | 
| বিজ্ঞাপন_ইউনিট | পুরস্কৃত বিজ্ঞাপনের অনুরোধ করতে ব্যবহৃত AdMob বিজ্ঞাপন ইউনিট আইডি। | ২৭৪৭২৩৭১৩৫ | 
| কাস্টম_ডেটা | customDataদ্বারা প্রদত্ত কাস্টম ডেটা স্ট্রিং।যদি অ্যাপটি কোনও কাস্টম ডেটা স্ট্রিং প্রদান না করে, তাহলে এই কোয়েরি প্যারামিটার মানটি SSV কলব্যাকে উপস্থিত থাকবে না। | নমুনা_কাস্টম_ডেটা_স্ট্রিং | 
| কী_আইডি | SSV কলব্যাক যাচাই করার জন্য কী ব্যবহার করা হবে। এই মানটি AdMob কী সার্ভার দ্বারা প্রদত্ত একটি পাবলিক কী-এর সাথে ম্যাপ করে। | ১২৩৪৫৬৭৮৯০ | 
| পুরষ্কারের পরিমাণ | বিজ্ঞাপন ইউনিট সেটিংসে উল্লেখিত পুরস্কারের পরিমাণ। | ৫ | 
| পুরষ্কার_আইটেম | বিজ্ঞাপন ইউনিট সেটিংসে উল্লেখিত পুরস্কারের আইটেম। | মুদ্রা | 
| স্বাক্ষর | AdMob দ্বারা তৈরি SSV কলব্যাকের জন্য স্বাক্ষর। | MEUCIQCLJS_s4ia_sN06HqzeW7Wc3nhZi4RlW3qV0oO-6AIYdQIgGJEh-rzKreO-paNDbSCzWGMtmgJHYYW9k2_icM9LFMY | 
| টাইমস্ট্যাম্প | ব্যবহারকারীকে ms-এ Epoch সময় হিসেবে কখন পুরস্কৃত করা হয়েছিল তার টাইমস্ট্যাম্প। | ১৫০৭৭৭০৩৬৫২৩৭৮২৩ | 
| লেনদেন_আইডি | AdMob দ্বারা তৈরি প্রতিটি পুরষ্কার অনুদান ইভেন্টের জন্য অনন্য হেক্স এনকোডেড শনাক্তকারী। | 18fa792de1bca816048293fc71035638 | 
| ব্যবহারকারীর আইডি | userIdদ্বারা প্রদত্ত ব্যবহারকারী শনাক্তকারী।যদি অ্যাপটি কোনও ব্যবহারকারী শনাক্তকারী প্রদান না করে, তাহলে এই কোয়েরি প্যারামিটারটি SSV কলব্যাকে উপস্থিত থাকবে না। | ১২৩৪৫৬৭ | 
বিজ্ঞাপন উৎস শনাক্তকারী
বিজ্ঞাপন উৎসের নাম এবং আইডি
| বিজ্ঞাপন উৎসের নাম | বিজ্ঞাপনের উৎস আইডি | 
|---|---|
| বিজ্ঞাপন তৈরি (বিডিং) | 1477265452970951479 | 
| অ্যাডকলোনি | 15586990674969969776 | 
| অ্যাডকলোনি (বিডিং) | 6895345910719072481 | 
| অ্যাডফ্যালকন | 3528208921554210682 | 
| অ্যাডমব নেটওয়ার্ক | 5450213213286189855 | 
| অ্যাডমব নেটওয়ার্ক ওয়াটারফল | 1215381445328257950 | 
| অ্যাপলোভিন | 1063618907739174004 | 
| অ্যাপলোভিন (বিডিং) | 1328079684332308356 | 
| চার্টবুস্ট | 2873236629771172317 | 
| চকোলেট প্ল্যাটফর্ম (বিডিং) | 6432849193975106527 | 
| কাস্টম ইভেন্ট | 18351550913290782395 | 
| ডিটি এক্সচেঞ্জ* * ২১শে সেপ্টেম্বর, ২০২২ এর আগে, এই নেটওয়ার্কটিকে "ফাইবার মার্কেটপ্লেস" বলা হত। | 2179455223494392917 | 
| সমতুল্য (বিডিং)* * ১২ জানুয়ারী, ২০২৩ এর আগে, এই নেটওয়ার্কটিকে "স্মার্ট অ্যাডসার্ভার" বলা হত। | 5970199210771591442 | 
| ফ্লাক্ট (বিডিং) | 8419777862490735710 | 
| ঝড়ো হাওয়া | 3376427960656545613 | 
| ফাইবার* * এই বিজ্ঞাপনের উৎসটি ঐতিহাসিক প্রতিবেদনের জন্য ব্যবহৃত হয়। | 4839637394546996422 | 
| আই-মোবাইল | 5208827440166355534 | 
| ডিজিটাল (বিডিং) উন্নত করুন | 159382223051638006 | 
| সূচক বিনিময় (বিডিং) | 4100650709078789802 | 
| ইনমোবি | 7681903010231960328 | 
| ইনমোবি (বিডিং) | 6325663098072678541 | 
| ইনমোবি এক্সচেঞ্জ (বিডিং) | 5264320421916134407 | 
| আয়রনসোর্স | 6925240245545091930 | 
| আয়রনসোর্স বিজ্ঞাপন (বিডিং) | 1643326773739866623 | 
| লিডবোল্ট | 2899150749497968595 | 
| লিফটঅফ নগদীকরণ* * ৩০ জানুয়ারী, ২০২৩ এর আগে, এই নেটওয়ার্কটিকে "ভাঙ্গল" বলা হত। | 1953547073528090325 | 
| লিফটঅফ মনিটাইজ (বিডিং)* * ৩০ জানুয়ারী, ২০২৩ এর আগে, এই নেটওয়ার্কটিকে "ভাঙ্গল (বিডিং)" বলা হত। | 4692500501762622185 | 
| এলজি ইউ+এডি | 18298738678491729107 | 
| লাইন বিজ্ঞাপন নেটওয়ার্ক | 3025503711505004547 | 
| ম্যাগনাইট ডিভি+ (বিডিং) | 3993193775968767067 | 
| মাইও | 7505118203095108657 | 
| মায়ো (বিডিং) | 1343336733822567166 | 
| মিডিয়া.নেট (বিডিং) | 2127936450554446159 | 
| মেডিয়েটেড হাউসের বিজ্ঞাপন | 6060308706800320801 | 
| মেটা অডিয়েন্স নেটওয়ার্ক* * ৬ জুন, ২০২২ এর আগে, এই নেটওয়ার্কটিকে "ফেসবুক অডিয়েন্স নেটওয়ার্ক" বলা হত। | 10568273599589928883 | 
| মেটা অডিয়েন্স নেটওয়ার্ক (বিডিং)* * ৬ জুন, ২০২২ এর আগে, এই নেটওয়ার্কটিকে "ফেসবুক অডিয়েন্স নেটওয়ার্ক (বিডিং)" বলা হত। | 11198165126854996598 | 
| মিন্টেগ্রাল | 1357746574408896200 | 
| মিন্টেগ্রাল (বিডিং) | 6250601289653372374 | 
| মবফক্স (বিডিং) | 3086513548163922365 | 
| MoPub ( অবঞ্চিত ) | 10872986198578383917 | 
| আমার লক্ষ্য | 8450873672465271579 | 
| নেন্ড | 9383070032774777750 | 
| নেক্সেক্সেন (বিডিং)* * ১ মে, ২০২৪ সালের আগে, এই নেটওয়ার্কটিকে "UnrulyX" বলা হত। | 2831998725945605450 | 
| ওয়ানট্যাগ এক্সচেঞ্জ (বিডিং) | 4873891452523427499 | 
| ওপেনএক্স (বিডিং) | 4918705482605678398 | 
| প্যাঙ্গেল | 4069896914521993236 | 
| প্যাঙ্গেল (বিডিং) | 3525379893916449117 | 
| পাবম্যাটিক (বিডিং) | 3841544486172445473 | 
| রিজার্ভেশন ক্যাম্পেইন | 7068401028668408324 | 
| এসকে গ্রহ | 734341340207269415 | 
| শেয়ারথ্রু (বিডিং) | 5247944089976324188 | 
| স্মাতো (বিডিং) | 3362360112145450544 | 
| সোনোবি (বিডিং) | 3270984106996027150 | 
| ট্যাপজয় | 7295217276740746030 | 
| ট্যাপজয় (বিডিং) | 4692500501762622178 | 
| টেনসেন্ট জিডিটি | 7007906637038700218 | 
| ট্রিপললিফ্ট (বিডিং) | 8332676245392738510 | 
| ইউনিটি বিজ্ঞাপন | 4970775877303683148 | 
| ইউনিটি বিজ্ঞাপন (বিডিং) | 7069338991535737586 | 
| ভার্ভ গ্রুপ (বিডিং) | 5013176581647059185 | 
| ভিপন | 1940957084538325905 | 
| ফলন (বিডিং) | 4193081836471107579 | 
| YieldOne (বিডিং) | 3154533971590234104 | 
| জুকস | 5506531810221735863 | 
ব্যবহারকারীকে পুরস্কৃত করা
কখন ব্যবহারকারীকে পুরস্কৃত করবেন তা নির্ধারণ করার সময় ব্যবহারকারীর অভিজ্ঞতা এবং পুরষ্কার যাচাইকরণের মধ্যে ভারসাম্য বজায় রাখা গুরুত্বপূর্ণ। সার্ভার-সাইড কলব্যাকগুলি বহিরাগত সিস্টেমে পৌঁছানোর আগে বিলম্বের সম্মুখীন হতে পারে। অতএব, সুপারিশকৃত সর্বোত্তম অনুশীলন হল ক্লায়েন্ট-সাইড কলব্যাক ব্যবহার করে ব্যবহারকারীকে অবিলম্বে পুরস্কৃত করা, এবং সার্ভার-সাইড কলব্যাক প্রাপ্তির পরে সমস্ত পুরষ্কারের বৈধতা সম্পাদন করা। এই পদ্ধতিটি প্রদত্ত পুরষ্কারের বৈধতা নিশ্চিত করার সাথে সাথে একটি ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
তবে, যেসব অ্যাপ্লিকেশনের ক্ষেত্রে পুরষ্কারের বৈধতা অত্যন্ত গুরুত্বপূর্ণ (উদাহরণস্বরূপ, পুরষ্কার আপনার অ্যাপের ইন-গেম অর্থনীতিকে প্রভাবিত করে) এবং পুরষ্কার প্রদানে বিলম্ব গ্রহণযোগ্য, সেখানে যাচাইকৃত সার্ভার-সাইড কলব্যাকের জন্য অপেক্ষা করা সর্বোত্তম পন্থা হতে পারে।
কাস্টম ডেটা
 সার্ভার-সাইড যাচাইকরণ কলব্যাকে অতিরিক্ত ডেটার প্রয়োজন হয় এমন অ্যাপগুলিকে পুরস্কৃত বিজ্ঞাপনের কাস্টম ডেটা বৈশিষ্ট্য ব্যবহার করা উচিত। পুরস্কৃত বিজ্ঞাপনের বস্তুতে সেট করা যেকোনো স্ট্রিং মান SSV কলব্যাকের custom_data কোয়েরি প্যারামিটারে পাস করা হয়। যদি কোনও কাস্টম ডেটা মান সেট না করা থাকে, তাহলে custom_data কোয়েরি প্যারামিটার মান SSV কলব্যাকে উপস্থিত থাকবে না।
পুরস্কৃত বিজ্ঞাপন লোড হওয়ার পরে নিম্নলিখিত উদাহরণটি SSV বিকল্পগুলি সেট করে:
SAMPLE_CUSTOM_DATA_STRING আপনার কাস্টম ডেটা দিয়ে প্রতিস্থাপন করুন।
আপনি যদি কাস্টম পুরষ্কার স্ট্রিং সেট করতে চান, তাহলে বিজ্ঞাপন দেখানোর আগে আপনাকে তা করতে হবে।
পুরস্কৃত SSV-এর ম্যানুয়াল যাচাইকরণ
 RewardedAdsVerifier ক্লাস কর্তৃক পুরস্কৃত SSV যাচাই করার জন্য সম্পাদিত পদক্ষেপগুলি নীচে বর্ণিত হয়েছে। যদিও অন্তর্ভুক্ত কোড স্নিপেটগুলি জাভাতে রয়েছে এবং Tink থার্ড-পার্টি লাইব্রেরি ব্যবহার করে, এই পদক্ষেপগুলি আপনি আপনার পছন্দের ভাষায় প্রয়োগ করতে পারেন, ECDSA সমর্থন করে এমন যেকোনো থার্ড-পার্টি লাইব্রেরি ব্যবহার করে।
পাবলিক কীগুলি আনুন
পুরস্কৃত SSV কলব্যাক যাচাই করতে, আপনার AdMob দ্বারা প্রদত্ত একটি পাবলিক কী প্রয়োজন।
পুরস্কৃত SSV কলব্যাক যাচাই করার জন্য ব্যবহৃত পাবলিক কীগুলির একটি তালিকা AdMob কী সার্ভার থেকে আনা যেতে পারে। পাবলিক কীগুলির তালিকাটি নিম্নলিখিত ফর্ম্যাটের সাথে JSON উপস্থাপনা হিসাবে সরবরাহ করা হয়েছে:
{
 "keys": [
    {
      keyId: 1916455855,
      pem: "-----BEGIN PUBLIC KEY-----\nMF...YTPcw==\n-----END PUBLIC KEY-----"
      base64: "MFkwEwYHKoZIzj0CAQYI...ltS4nzc9yjmhgVQOlmSS6unqvN9t8sqajRTPcw=="
    },
    {
      keyId: 3901585526,
      pem: "-----BEGIN PUBLIC KEY-----\nMF...aDUsw==\n-----END PUBLIC KEY-----"
      base64: "MFYwEAYHKoZIzj0CAQYF...4akdWbWDCUrMMGIV27/3/e7UuKSEonjGvaDUsw=="
    },
  ],
}
 পাবলিক কীগুলি পুনরুদ্ধার করতে, AdMob কী সার্ভারের সাথে সংযোগ করুন এবং কীগুলি ডাউনলোড করুন। নিম্নলিখিত কোডটি এই কাজটি সম্পন্ন করে এবং data ভেরিয়েবলে কীগুলির JSON উপস্থাপনা সংরক্ষণ করে।
String url = ...;
NetHttpTransport httpTransport = new NetHttpTransport.Builder().build();
HttpRequest httpRequest =
    httpTransport.createRequestFactory().buildGetRequest(new GenericUrl(url));
HttpResponse httpResponse = httpRequest.execute();
if (httpResponse.getStatusCode() != HttpStatusCodes.STATUS_CODE_OK) {
  throw new IOException("Unexpected status code = " + httpResponse.getStatusCode());
}
String data;
InputStream contentStream = httpResponse.getContent();
try {
  InputStreamReader reader = new InputStreamReader(contentStream, UTF_8);
  data = readerToString(reader);
} finally {
  contentStream.close();
}
মনে রাখবেন যে পাবলিক কীগুলি নিয়মিতভাবে ঘোরানো হয়। আসন্ন ঘূর্ণন সম্পর্কে আপনাকে জানানোর জন্য একটি ইমেল পাবেন। যদি আপনি পাবলিক কীগুলি ক্যাশে করেন, তাহলে এই ইমেলটি পাওয়ার পরে আপনার কীগুলি আপডেট করা উচিত।
 পাবলিক কীগুলি আনা হয়ে গেলে, সেগুলিকে পার্স করতে হবে। নীচের parsePublicKeysJson পদ্ধতিটি একটি JSON স্ট্রিং, যেমন উপরের উদাহরণ, ইনপুট হিসাবে নেয় এবং key_id মান থেকে পাবলিক কীগুলিতে একটি ম্যাপিং তৈরি করে, যা Tink লাইব্রেরি থেকে ECPublicKey অবজেক্ট হিসাবে এনক্যাপসুলেট করা হয়।
private static Map<Integer, ECPublicKey> parsePublicKeysJson(String publicKeysJson)
    throws GeneralSecurityException {
  Map<Integer, ECPublicKey> publicKeys = new HashMap<>();
  try {
    JSONArray keys = new JSONObject(publicKeysJson).getJSONArray("keys");
    for (int i = 0; i < keys.length(); i++) {
      JSONObject key = keys.getJSONObject(i);
      publicKeys.put(
          key.getInt("keyId"),
          EllipticCurves.getEcPublicKey(Base64.decode(key.getString("base64"))));
    }
  } catch (JSONException e) {
    throw new GeneralSecurityException("failed to extract trusted signing public keys", e);
  }
  if (publicKeys.isEmpty()) {
    throw new GeneralSecurityException("No trusted keys are available.");
  }
  return publicKeys;
}
যাচাই করার জন্য কন্টেন্ট পান
 পুরস্কৃত SSV কলব্যাকের শেষ দুটি কোয়েরি প্যারামিটার সর্বদা signature এবং key_id, এই ক্রমে। বাকি কোয়েরি প্যারামিটারগুলি যাচাই করার জন্য কন্টেন্ট নির্দিষ্ট করে। ধরে নেওয়া যাক আপনি https://www.myserver.com/mypath এ পুরষ্কার কলব্যাক পাঠানোর জন্য AdMob কনফিগার করেছেন। নীচের স্নিপেটে যাচাই করার জন্য কন্টেন্ট হাইলাইট করে পুরষ্কৃত SSV কলব্যাকের একটি উদাহরণ দেখানো হয়েছে।
https://www.myserver.com/path?ad_network=54...55&ad_unit=12345678&reward_amount=10&reward_item=coins ×tamp=150777823&transaction_id=12...DEF&user_id=1234567&signature=ME...Z1c&key_id=1268887
নিচের কোডটি দেখায় যে কীভাবে একটি কলব্যাক URL থেকে যাচাই করার জন্য একটি UTF-8 বাইট অ্যারে হিসাবে কন্টেন্ট পার্স করতে হয়।
public static final String SIGNATURE_PARAM_NAME = "signature=";
...
URI uri;
try {
  uri = new URI(rewardUrl);
} catch (URISyntaxException ex) {
  throw new GeneralSecurityException(ex);
}
String queryString = uri.getQuery();
int i = queryString.indexOf(SIGNATURE_PARAM_NAME);
if (i == -1) {
  throw new GeneralSecurityException("needs a signature query parameter");
}
byte[] queryParamContentData =
    queryString
        .substring(0, i - 1)
        // i - 1 instead of i because of & in the query string
        .getBytes(Charset.forName("UTF-8"));
কলব্যাক URL থেকে স্বাক্ষর এবং key_id পান
 পূর্ববর্তী ধাপের queryString মান ব্যবহার করে, কলব্যাক URL থেকে signature এবং key_id কোয়েরি প্যারামিটারগুলি নীচে দেখানো পদ্ধতিতে পার্স করুন:
public static final String KEY_ID_PARAM_NAME = "key_id=";
...
String sigAndKeyId = queryString.substring(i);
i = sigAndKeyId.indexOf(KEY_ID_PARAM_NAME);
if (i == -1) {
  throw new GeneralSecurityException("needs a key_id query parameter");
}
String sig =
    sigAndKeyId.substring(
        SIGNATURE_PARAM_NAME.length(), i - 1 /* i - 1 instead of i because of & */);
int keyId = Integer.valueOf(sigAndKeyId.substring(i + KEY_ID_PARAM_NAME.length()));
যাচাইকরণ সম্পাদন করুন
 শেষ ধাপ হল উপযুক্ত পাবলিক কী দিয়ে কলব্যাক URL এর বিষয়বস্তু যাচাই করা। parsePublicKeysJson পদ্ধতি থেকে ফিরে আসা ম্যাপিংটি নিন এবং কলব্যাক URL থেকে key_id প্যারামিটার ব্যবহার করে সেই ম্যাপিং থেকে পাবলিক কীটি পান। তারপর সেই পাবলিক কী দিয়ে স্বাক্ষরটি যাচাই করুন। এই পদক্ষেপগুলি নীচে verify পদ্ধতিতে দেখানো হয়েছে।
private void verify(final byte[] dataToVerify, int keyId, final byte[] signature)
    throws GeneralSecurityException {
  Map<Integer, ECPublicKey> publicKeys = parsePublicKeysJson();
  if (publicKeys.containsKey(keyId)) {
    foundKeyId = true;
    ECPublicKey publicKey = publicKeys.get(keyId);
    EcdsaVerifyJce verifier = new EcdsaVerifyJce(publicKey, HashType.SHA256, EcdsaEncoding.DER);
    verifier.verify(signature, dataToVerify);
  } else {
    throw new GeneralSecurityException("cannot find verifying key with key ID: " + keyId);
  }
}
যদি পদ্ধতিটি কোনও ব্যতিক্রম ছাড়াই কার্যকর হয়, তাহলে কলব্যাক URL সফলভাবে যাচাই করা হয়েছে।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
- আমি কি AdMob কী সার্ভার দ্বারা প্রদত্ত পাবলিক কী ক্যাশে করতে পারি?
- SSV কলব্যাক যাচাই করার জন্য প্রয়োজনীয় ক্রিয়াকলাপের সংখ্যা কমাতে আমরা আপনাকে AdMob কী সার্ভার দ্বারা প্রদত্ত পাবলিক কী ক্যাশে করার পরামর্শ দিচ্ছি। তবে, মনে রাখবেন যে পাবলিক কীগুলি নিয়মিতভাবে ঘোরানো হয় এবং 24 ঘন্টার বেশি সময় ধরে ক্যাশে করা উচিত নয়।
- AdMob কী সার্ভার দ্বারা প্রদত্ত পাবলিক কীগুলি কত ঘন ঘন ঘোরানো হয়?
- AdMob কী সার্ভার দ্বারা প্রদত্ত পাবলিক কীগুলি একটি পরিবর্তনশীল সময়সূচীতে ঘোরানো হয়। SSV কলব্যাকের যাচাইকরণ যাতে উদ্দেশ্য অনুসারে কাজ করে তা নিশ্চিত করার জন্য, পাবলিক কীগুলি 24 ঘন্টার বেশি সময় ধরে ক্যাশে করা উচিত নয়।
- আমার সার্ভারে পৌঁছানো না গেলে কী হবে?
-  SSV কলব্যাকের জন্য Google একটি HTTP 200 OKসাফল্যের স্থিতি প্রতিক্রিয়া কোড আশা করে। যদি আপনার সার্ভারে পৌঁছানো না যায় বা প্রত্যাশিত প্রতিক্রিয়া প্রদান না করে, তাহলে Google এক সেকেন্ডের ব্যবধানে পাঁচবার পর্যন্ত SSV কলব্যাক পাঠানোর পুনরায় চেষ্টা করবে।
- SSV কলব্যাকগুলি Google থেকে আসছে কিনা তা আমি কীভাবে যাচাই করব?
- SSV কলব্যাকগুলি Google থেকে এসেছে কিনা তা যাচাই করতে বিপরীত DNS লুকআপ ব্যবহার করুন।