এই পৃষ্ঠাটি আপনার গেমের মধ্যে Recall API কীভাবে বাস্তবায়ন করবেন তা ব্যাখ্যা করে। এটি প্রথমে API সমর্থন করার জন্য আপনার গেম সার্ভার এবং ক্লায়েন্ট সেট আপ করার বিষয়টি কভার করে এবং তারপরে টোকেনগুলি কীভাবে সংরক্ষণ এবং পুনরুদ্ধার করবেন তা আলোচনা করে।
গেম সার্ভার সেটআপ
গুগল সার্ভারে Recall API কল করার জন্য আপনার গেম সার্ভার সেট আপ করুন।
১. আপনার প্লে গেমস সার্ভিসেস প্রজেক্ট সেট আপ করুন
যদি আপনি ইতিমধ্যেই তা না করে থাকেন, তাহলে Google Play Games Services সেট আপ করুন -এর নির্দেশাবলী অনুসরণ করুন।
2. গেমটির জন্য একটি পরিষেবা অ্যাকাউন্ট সেট আপ করুন
একটি পরিষেবা অ্যাকাউন্ট তৈরি করার নির্দেশাবলী অনুসরণ করুন। শেষে আপনার কাছে পরিষেবা অ্যাকাউন্টের শংসাপত্র সহ একটি JSON ফাইল থাকা উচিত।
৩. PlayGamesServices এর জন্য সার্ভার-সাইড জাভা লাইব্রেরি ডাউনলোড করুন।
সর্বশেষ google-api-services-games লাইব্রেরিটি ডাউনলোড করুন এবং আপনার সার্ভারে আপলোড করুন।
৪. Recall API কলের জন্য শংসাপত্র প্রস্তুত করুন
আরও প্রেক্ষাপটের জন্য একটি অনুমোদিত API কল করার প্রস্তুতি দেখুন।
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.games.Games;
import com.google.api.services.games.GamesScopes;
// ...
GoogleCredential credential =
GoogleCredential.fromStream(new FileInputStream("<credentials>.json"))
.createScoped(Collections.singleton(GamesScopes.ANDROIDPUBLISHER));
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
গেম ক্লায়েন্ট সেটআপ
Google সার্ভারের সাথে যোগাযোগের জন্য আমাদের সার্ভার দ্বারা ব্যবহৃত রিকোল সেশন আইডিগুলি পুনরুদ্ধার করতে আপনার গেম ক্লায়েন্ট সেট আপ করুন।
জাভা এসডিকে
আপনার ক্লায়েন্টের মধ্যে জাভা SDK সেট আপ করুন , এবং com.google.android.gms:play-services-games-v2:19.0.0 অন্তর্ভুক্ত করতে ভুলবেন না।
এবং আপনার gradle ফাইলে com.google.android.gms:play-services-tasks:18.0.2 বা তার বেশি।
সঠিক তথ্য সহ Google এর সার্ভারের সাথে যোগাযোগ করার জন্য, আপনাকে ক্লায়েন্ট SDK থেকে একটি Recall session ID অনুরোধ করতে হবে, যা আপনি আপনার গেমের সার্ভারে পাঠান।
কোটলিন
PlayGames.getRecallClient(getActivity())
.requestRecallAccess()
.addOnSuccessListener { recallAccess -> val recallSessionId: String = recallAccess.getSessionId() }
// Send the recallSessionId to your game server
জাভা
PlayGames.getRecallClient(getActivity())
.requestRecallAccess()
.addOnSuccessListener(
recallAccess -> {
String recallSessionId = recallAccess.getSessionId();
// Send the recallSessionId to your game server
});
ইউনিটি এসডিকে
যদি ইতিমধ্যে সম্পন্ন না হয়ে থাকে, তাহলে আপনার ক্লায়েন্টের মধ্যে ইউনিটি SDK সেট আপ করুন ।
সঠিক তথ্য সহ Google এর সার্ভারের সাথে যোগাযোগ করতে, আপনাকে ক্লায়েন্ট SDK থেকে একটি Recall session ID অনুরোধ করতে হবে এবং এটি আপনার গেমের সার্ভারে পাঠাতে হবে।
PlayGamesPlatform.Instance.RequestRecallAccess(
recallAccess => {
string recallSessionId = recallAccess.sessionId;
// Send the recallSessionId to your game server
});
আপনার গেম সার্ভারের মধ্যে Recall API ব্যবহার করুন
আপনার সার্ভার এবং ক্লায়েন্ট কনফিগার করার পরে, আপনি আপনার গেম ক্লায়েন্ট থেকে আপনার গেম সার্ভারে recallSessionID পাঠাতে পারেন এবং সার্ভার-সাইড Recall টোকেন সংরক্ষণ, পুনরুদ্ধার বা মুছে ফেলার জন্য Java API ব্যবহার শুরু করতে নিম্নলিখিত নির্দেশিকা অনুসরণ করতে পারেন।
টোকেন সংরক্ষণ করুন
গুগল প্লে গেমস রিকল এপিআই-তে একটি প্লেয়ার অ্যাকাউন্টে দুটি তথ্য থাকে:
- একটি ইন-গেম অ্যাকাউন্টের জন্য একটি স্থিতিশীল শনাক্তকারী হিসেবে কাজ করে এমন একটি পারসোনা
- একটি টোকেন যা একজন খেলোয়াড়কে নিরাপদে অ্যাকাউন্টে সাইন ইন করার চাবি হিসেবে কাজ করে
LinkPersonaRequest অবজেক্ট ব্যবহার করে আপনি একজন ব্যবহারকারীর পারসোনা এবং টোকেন সংরক্ষণ করতে পারেন। গুগল এপিআই কল করতে GoogleCredential ব্যবহার করুন (প্রসঙ্গের জন্য গুগল এপিআই কলিং দেখুন)। একটি পারসোনার একটি 1:1 কার্ডিনালিটি সীমাবদ্ধতা থাকে: একটি একক PGS প্রোফাইলে কেবল একটি একক পারসোনা থাকতে পারে এবং একটি পারসোনা কেবল একটি একক PGS প্রোফাইলে থাকতে পারে। 1:1 কার্ডিনালিটি সীমাবদ্ধতার লঙ্ঘন কীভাবে সমাধান করা উচিত তা নির্ধারণ করতে বিরোধপূর্ণ লিঙ্ক রেজোলিউশন নীতি সেট করুন।
ঐচ্ছিকভাবে টোকেনের মেয়াদ শেষ হওয়ার সময় সেট করুন। একটি Time to Live সেট করতে Durations অবজেক্টের সাথে SetTtl() ব্যবহার করুন অথবা setExpireTime() দিয়ে একটি সঠিক মেয়াদ শেষ হওয়ার সময় প্রদান করুন।
আপনাকে অবশ্যই পারসোনা এবং গেম টোকেন এনক্রিপ্ট করতে হবে, এবং এগুলিতে ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য থাকতে পারে না। পারসোনা এবং টোকেন স্ট্রিং সর্বাধিক 256 অক্ষর দীর্ঘ হতে পারে।
import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.api.services.games.model.LinkPersonaRequest;
import com.google.api.services.games.model.LinkPersonaResponse;
import com.google.protobuf.util.Durations;
// ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
String recallSessionId = ... // recallSessionID from game client
String persona = ... // encrypted opaque string, stable for in-game account
String token = ... // encrypted opaque string encoding the progress line
LinkPersonaRequest linkPersonaRequest =
LinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
.setToken(token)
.setCardinalityConstraint(ONE_PERSONA_TO_ONE_PLAYER)
.setConflictingLinksResolutionPolicy(CREATE_NEW_LINK)
.setTtl(Durations.fromDays(7)) // Optionally set TTL for token
.build();
LinkPersonaResponse linkPersonaResponse =
gamesApi.recall().linkPersona(linkPersonaRequest).execute();
if (linkPersonaResponse.getState() == LINK_CREATED) {
// success
}
টোকেনগুলি পুনরুদ্ধার করুন
আপনার গেমের চাহিদার উপর ভিত্তি করে টোকেন পুনরুদ্ধারের জন্য তিনটি বিকল্প রয়েছে। আপনি নিম্নলিখিতগুলির জন্য অনুরোধ করতে পারেন:
- বর্তমান গেমের সাথে সম্পর্কিত টোকেনগুলি, গেম-স্কোপড রিকল টোকেন সহ।
- ডেভেলপার অ্যাকাউন্টের মালিকানাধীন সমস্ত গেম জুড়ে সংরক্ষিত শেষ টোকেন।
- ডেভেলপার অ্যাকাউন্টের মালিকানাধীন গেমগুলির একটি তালিকা দেওয়া হয়েছে, প্রতিটি গেমের সাথে সম্পর্কিত সমস্ত প্রত্যাহার টোকেন।
গেম-স্কোপড রিকল টোকেন
বর্তমান গেম থেকে রিকোল টোকেনগুলি পুনরুদ্ধার করতে, ক্লায়েন্ট থেকে recallSessionId টি পান এবং এটি retrieveTokens API-তে পাস করুন:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrievePlayerTokensResponse;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrievePlayerTokensResponse retrievePlayerTokensResponse =
gamesApi.recall().retrieveTokens(recallSessionId).execute();
for (RecallToken recallToken : retrievePlayerTokensResponse.getTokens()) {
String token recallToken.getToken();
// Same string as was written in LinkPersona call
// decrypt and recover in-game account
}
ডেভেলপার অ্যাকাউন্টের মালিকানাধীন সমস্ত গেমের জন্য সর্বশেষ প্রত্যাহার টোকেন
Google Play Console-এ ডেভেলপার অ্যাকাউন্টের মালিকানাধীন সমস্ত গেমে সংরক্ষিত সাম্প্রতিকতম টোকেনটি পুনরুদ্ধার করতে, আপনাকে ক্লায়েন্ট থেকে recallSessionId পেতে হবে এবং এটি lastTokenFromAllDeveloperGames API-তে পাস করতে হবে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে। প্রতিক্রিয়ার অংশ হিসাবে, আপনি এই টোকেনের সাথে সম্পর্কিত অ্যাপ্লিকেশন আইডিটি পরীক্ষা করতে পারেন।
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveDeveloperGamesLastPlayerTokenResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrieveDeveloperGamesLastPlayerTokenResponse response =
gamesApi.recall().lastTokenFromAllDeveloperGames(recallSessionId)
.execute();
if (response.hasGamePlayerToken()) {
GamePlayerToken gamePlayerToken = response.getGamePlayerToken();
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
ডেভেলপার অ্যাকাউন্টের মালিকানাধীন গেমের একটি নির্দিষ্ট তালিকা জুড়ে সমস্ত প্রত্যাহার টোকেন
Google Play Console-এ আপনার ডেভেলপার অ্যাকাউন্টের মালিকানাধীন গেমের তালিকার সাথে সম্পর্কিত সমস্ত টোকেন পুনরুদ্ধার করতে, ক্লায়েন্ট থেকে recallSessionId টি পান এবং এটি gamesPlayerTokens API-তে পাস করুন। অ্যাপ্লিকেশন আইডিগুলির একটি তালিকা সরবরাহ করুন।
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveGamesPlayerTokensResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
// Application IDs for which you would like to retrieve the recall tokens.
List<String> applicationIds = ...
RetrieveGamesPlayerTokensResponse response =
gamesApiClient
.recall()
.gamesPlayerTokens(recallSessionId)
.setApplicationIds(applicationIds)
.execute();
for (GamePlayerToken gamePlayerToken : response.getGamePlayerTokens()) {
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
প্রত্যাহার টোকেন মুছুন
প্রয়োজনে, আপনি নিম্নলিখিত কলের মাধ্যমে রিকাল টোকেনটিও মুছে ফেলতে পারেন:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.UnlinkPersonaRequest;
import com.google.api.services.games.model.UnlinkPersonaResponse;
// ...
String recallSessionId = ...
String persona = ...
String token = ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
UnlinkPersonaRequest unlinkPersonaRequest =
UnlinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
// .setToken(token) - alternatively set token, but not both
.build();
UnlinkPersonaResponse unlinkPersonaResponse =
gamesApi.recall().unlinkPersona(unlinkPersonaRequest).execute();
boolean unlinked = unlinkPersonaResponse.isUnlinked();
প্রোফাইললেস মোড চালু করুন
আপনি এই পদক্ষেপগুলি অনুসরণ করে PGS প্রোফাইল নেই এমন ব্যবহারকারীদের জন্য সীমিত Recall API কার্যকারিতা সক্ষম করতে পারেন:
- Play Developer Console-এ আপনার PGS গেম প্রজেক্টের জন্য প্রোফাইললেস রিকল সক্ষম করুন।

- এই বিভাগে পরে বর্ণিত অতিরিক্ত শর্তাবলী পর্যালোচনা করুন।
- আপনার অ্যাপ ম্যানিফেস্টে নিম্নলিখিত মেটাডেটা ট্যাগটি যোগ করুন:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
অতিরিক্ত শর্তাবলী
প্লে গেমস সার্ভিসেসের পরিষেবার শর্তাবলীর আওতায় থাকা ছাড়াও, আপনি সম্মত হচ্ছেন যে যদি আপনি PGS প্রোফাইলবিহীন ব্যবহারকারীদের জন্য Recall API ব্যবহার করেন, যা প্লে গেমস সার্ভিসেস প্রোফাইল ছাড়াই Google-এর সাথে ব্যবহারকারীর ডেটা ভাগ করে নেওয়ার সুযোগ করে দেয়, তাহলে Google-এর সাথে এই ধরনের ডেটা ভাগ করার আগে, আপনাকে অবশ্যই নিম্নলিখিত বিষয়গুলি বর্ণনা করে শেষ ব্যবহারকারীকে যথাযথ বিজ্ঞপ্তি প্রদান করতে হবে:
- Play Games অ্যাকাউন্ট লিঙ্কিং বৈশিষ্ট্যটি সক্ষম করতে Google এর সাথে আপনার ডেটা শেয়ার করা।
- প্লে গেমস সেটিংসের মাধ্যমে এই ধরনের শেয়ারিং পরিচালনা করার জন্য সেটিংসের উপলব্ধতা।
- Google গোপনীয়তা নীতির অধীনে এই ধরনের ডেটা প্রক্রিয়াকরণ, এবং সমস্ত প্রযোজ্য আইনি প্রয়োজনীয়তা পূরণ করে এমন শেয়ারিংয়ের জন্য উপযুক্ত শেষ ব্যবহারকারীর সম্মতি নেওয়া।