সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাকগুলি যাচাই করুন, সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাকগুলি যাচাই করুন, সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাকগুলিকে বৈধ করুন

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস ইউনিটি ফ্লাটার

সার্ভার-সাইড যাচাইকরণ কলব্যাক হল 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 বিকল্পগুলি সেট করে:

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: AdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (ad) {
      ServerSideVerificationOptions _options =
          ServerSideVerificationOptions(
              customData: 'SAMPLE_CUSTOM_DATA_STRING');
      ad.setServerSideOptions(_options);
      _rewardedAd = ad;
    },
    onAdFailedToLoad: (error) {},
  ),
);

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
&timestamp=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 লুকআপ ব্যবহার করুন।