Recall API를 사용하면 게임에서 Google 서버에 리콜 토큰을 저장하여 Google Play 게임즈 서비스 (PGS) 사용자와 게임 내 계정 간의 링크를 관리할 수 있습니다. 다음은 Recall API를 사용하는 방법에 관한 샘플 시나리오입니다.
사용자는 개발자가 사용자 진행 상황을 추적하는 ID 시스템을 보유하고 다른 인증 방법과 함께 PGS를 사용하여 사용자를 게임에 로그인시키는 게임을 플레이합니다. 이 예에서는 사용자가 PGS 계정 Laura에 로그인하고 개발자의 ID 시스템 Racer94로 게임 내 계정을 만듭니다. 사용자가 게임을 플레이하면 개발자의 게임 서버가 진행 상황을 동기화합니다.
별도로 개발자는 사용자의 게임 내 계정에 해당하는 리콜 토큰을 Google에 저장합니다. Google은 사용자의 PGS 프로필에 대해 해당 리콜 토큰을 자동으로 저장합니다.
이제 사용자는 처음으로 PC의 GPG에서 게임을 플레이하기로 합니다. 사용자는 PGS 계정으로 자동으로 로그인되고 게임 클라이언트는 이 PGS 사용자에게 진행 상황이 있는지 확인합니다. 그러면 게임 서버가 Google에 쿼리하여 이 PGS 계정의 토큰이 있는지 확인합니다. 토큰이 있으므로 Google은 리콜 토큰을 다시 보내고, 게임 서버는 이 토큰을 사용하여 사용자의 연결된 계정 Racer94를 찾아 진행 상황을 복원합니다.
PGS로 로그인하는 것은 원활한 환경이므로 사용자가 사용자 이름이나 비밀번호를 입력하지 않고도 사용자의 진행 상황이 앱에서 복원됩니다. 또한 개발자는 기존 ID 시스템으로 PGS 로그인을 사용할 수 있으며 Google을 통해 플레이어 진행 상황과 PGS 계정 간의 링크를 저장할 수 있습니다.
앞의 예에서 볼 수 있듯이 Recall API는 두 가지 기본 작업을 실행합니다.
사용자가 게임 내 계정 중 하나로 로그인할 때 Google에 토큰을 저장합니다.
게임 내 계정을 복원하기 위해 사용자의 토큰을 검색합니다.
리콜 토큰 외에도 Recall API에는 카디널리티 제약 조건을 적용하기 위해 캐릭터라고 하는 게임 내 계정에 해당하는 안정적인 식별자가 필요합니다. 캐릭터는 개발자의 ID 시스템 내에서 사용자의 게임 내 계정을 나타내는 라벨로, 리콜 토큰은 사용자의 게임 내 계정을 게임에 복원하는 데 사용되는 키로 생각할 수 있습니다. 캐릭터 및 토큰 값은 여러 PGS 프로젝트에서 재사용되면 안 됩니다.
또한 리콜 토큰은 시간이 지남에 따라 변경될 수 있지만 캐릭터는 사용자의 게임 내 계정에 따라 안정적이어야 합니다.
카디널리티 규칙
Recall API는 PGS 프로필과 게임 내 계정 간에 1:1 관계를 적용합니다(카디널리티 규칙이라고 함). 이 경우 하나의 캐릭터는 하나의 PGS 프로필에만 연결될 수 있고 하나의 PGS 프로필은 하나의 캐릭터에만 연결될 수 있습니다. 캐릭터는 게임 내 계정의 안정적인 식별자로 사용됩니다. 리콜 토큰은 시간이 지남에 따라 변경될 수 있기 때문입니다.
PGS 프로필에 연결된 캐릭터도 시간이 지남에 따라 변경될 수 있습니다(다양한 게임 내 계정이 PGS 프로필에 연결되어 있기 때문).
리콜 토큰 저장 및 검색을 위한 기술 흐름
이 섹션에서는 리콜 토큰을 저장하고 검색할 때 게임 클라이언트와 Google 서버가 있는 서버 간의 기술 흐름을 설명합니다.
1단계: PGS 사용자 로그인 및 세션 ID 검색
게임은 PGS SDK를 초기화하고 PGS로 사용자 로그인을 시도합니다.
사용자가 로그인 상태라고 가정하고 게임 클라이언트의 게임 SDK에서 세션 ID를 요청하고 Google의 OAuth 백엔드에서 OAuth 2.0 토큰을 요청합니다. 세션 ID 및 OAuth 2.0 토큰은 Google 게임 백엔드와 통신하는 데 사용됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-26(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-26(UTC)"],[],[],null,["# Recall API\n\nThe Recall API lets games manage links between Google Play Games Services (PGS) users and\ntheir in-game accounts by storing *recall tokens* with Google servers. Here's a\nsample scenario of how the Recall API might be used.\n\n1. A user is playing a game where the developer has an identity system to track\n user progress, and uses PGS in parallel with other authentication methods to\n log users into their game. In this example, a user is logged into their PGS\n account *Laura* , and creates an in-game account with the developer's\n identity system called *Racer94*. As the user plays the game, the\n developer's game server syncs their progress.\n\n2. Separately, the developer saves a recall token with Google, which\n corresponds with the user's in-game account. Google automatically stores\n that recall token against the user's PGS profile.\n\n3. The user now decides to play the game on [GPG on\n PC](/games/playgames/overview) for the first time. The user is automatically\n signed in with their PGS account, and the game client checks to see if there\n is any progress available for this PGS user. The game server then queries\n Google to see if there are any tokens for this PGS account. Since there are,\n Google sends back the recall token, and the game server uses that token to\n find the user's associated account Racer94, and restore their progress.\n Since signing in with PGS is a frictionless experience, the user's progress\n is restored by the app without the user needing to enter a username or\n password. Furthermore, the developer can use PGS sign-in with their existing\n identity system, and rely on Google to store the link between player\n progress and their PGS account.\n\nAs seen in the example earlier, there are two main actions which are performed\nby the Recall API:\n\n- **Storing** the token with Google when a user logs in with one of the in-game\n accounts.\n\n- **Retrieving** the token for a user in order to restore their in-game\n accounts.\n\nIn addition to recall tokens, the Recall API also requires a stable identifier\ncorresponding to the in-game account, known as *persona* , to enforce\n[cardinality constraints](#enforcing-cardinality). You might think of a persona\nas the label which represents the user's in-game account within the developer's\nidentity system, and the recall token as a key which is used to restore the\nuser's in-game account to the game. Persona and token values must not be reused\nacross different\n[PGS projects](/games/pgs/console/setup#add_your_game_to_the).\nAlso, while recall tokens may be changed over time, a persona should be stable\naccording to the user's in-game account.\n| **Note:** Strings used for recall tokens and personas must be opaque and not contain any sensitive or personally-identifiable information (including but not limited to name, email address, and demographics). Games must use robust encryption algorithms for generating recall tokens.\n\nCardinality rules\n-----------------\n\nThe Recall API enforces a 1:1 relationship between PGS profiles and in-game\naccounts (referred to as *cardinality rules*), where one persona can only be\nlinked to one PGS profile, and one PGS profile can only be linked to one\npersona. The persona is used as a stable identifier for an in-game account,\nsince recall tokens may change over time.\n\nThe persona linked to a PGS profile may also be changed over time (as different\nin-game accounts are linked to the PGS profile).\n\nTechnical flows for storing and retrieving the recall tokens\n------------------------------------------------------------\n\nThis section covers the technical flow between the game client and servers with\nGoogle servers when storing and retrieving recall tokens.\n\n### Step 1: Sign in the PGS User and retrieve the session ID\n\nThe game initializes the PGS SDK and attempts to sign the user in with PGS.\n\nAssuming the user is signed in, request a session ID from the Games SDK on the\ngame client, and request an OAuth 2.0 token from Google's OAuth backend. The\nsession ID and OAuth 2.0 tokens are used to communicate with the Google Games\nbackend.\n\n### Step 2: Retrieve any available recall token\n\nRequest for any associated recall token with the PGS user's account. If a token\nis present, [proceed to Step 3a and restore progress](#restore-progress).\nOtherwise, if this is a new user and they have no token present, [proceed to\nStep 3b and store a new token](#store-tokens).\n\n### Step 3a: If token is present, restore progress\n\nIf a token is present, retrieve and decrypt the token, and restore user data.\n\n### Step 3b: If no token is present, store a token\n\nSince no token is present, no progress is restored. The user proceeds to sign in\nwith the developer's identity system, or creates a new account if one does not\nexist. Note - this isn't signing in with PGS (which has been done already), but\nwith a developer's identity system outside of PGS.\n\nCreate an encrypted recall token which encodes the user's in-game account, and\nsend it to Google along with the session ID and OAuth 2.0 token. At this point,\nGoogle creates an association between the recall token which was sent, and the\nplayer's PGS account.\n\nFlows for users without a PGS profile\n-------------------------------------\n\nYou can store recall tokens for a user who hasn't created a PGS profile yet by\nusing profileless mode. However, there are two important caveats:\n\n- You can't retrieve tokens for a user who doesn't have a PGS profile. Profile creation is automatically prompted when the user tries to log into your game with Play Games Services on a second device.\n- You must follow [additional guidelines](/games/pgs/recall/recall-setup#terms) to ensure you have an appropriate notice describing the following items and obtaining the appropriate end-user consent:\n - Your sharing of the data with Google to enable the Play Games account linking feature.\n - The availability of settings to manage this sharing, such as Play Games settings.\n - The processing of such data under the [Google Privacy\n Policy](https://policies.google.com/privacy).\n\n### Store a token and persona pair\n\n1. A user without a PGS profile opens a game that has profileless recall enabled.\n2. The Games SDK triggers an automatic sign-in, which fails because the user has no PGS profile.\n3. The Games SDK shows a snackbar that informs the user that the game has integration with Google. This snackbar is actionable---the user can disable recall until a profile is created.\n4. The game requests recall access. Note that PGS rejects recall access requests when there are PGS profiles on the device or when there are no Google Accounts on the device. In that case, the game should proceed without using PGS.\n5. After the user logs in with an in-game account, the game creates a token and persona pair for the user that corresponds to their in-game account. The game stores this pair with Google. The game might store more tokens later if the user logs into other in-game accounts.\n\n### Launch a game on a new device\n\n1. A user without a PGS profile opens a game that has profileless recall enabled on a device.\n2. The game records a profileless recall token as described in [Store a token\n and persona pair](#profileless-store).\n3. The user opens the same game on a different device that has the same account setup.\n4. The Games SDK triggers profile creation. The user can review and reject previously stored recall tokens. The user creates a PGS profile at this time.\n5. The automatic sign-in into PGS completes, and the game receives the authenticated status.\n6. The game retrieves recall tokens for the user as usual.\n\nNext steps\n----------\n\nIn order to integrate the Recall API with your client and game server, [follow\nthis guidance](/games/pgs/recall/recall-setup)."]]