Tích hợp tính năng Lấy lại của Dịch vụ trò chơi của Play vào ứng dụng

Đăng nhập người dùng vào trò chơi của bạn một cách liền mạch trong khi vẫn tiếp tục sử dụng hệ thống tài khoản của riêng bạn. Với API Thu hồi của Dịch vụ trò chơi của Play, bạn có thể liên kết tài khoản trong trò chơi với một tài khoản Dịch vụ trò chơi của Google Play. Sau đó, khi người dùng chơi trò chơi của bạn trên nhiều thiết bị (hoặc cùng một thiết bị sau khi cài đặt lại trò chơi), bạn sẽ truy vấn tài khoản trong trò chơi được liên kết và đơn giản hoá quy trình đăng nhập.

Nếu bạn đã tích hợp với Android Recall API, thì những Recall API này sẽ quen thuộc với bạn. Mọi hoạt động tích hợp phía máy chủ với tính năng Gọi lại của Dịch vụ trò chơi của Play đều có thể được các trò chơi trên máy tính sử dụng lại vì chúng giống nhau trên cả Android và máy tính.

Điều kiện tiên quyết

Bước 1: Thêm mã dự án Play Games Services vào tệp kê khai

Sau khi bạn hoàn tất quá trình thiết lập Dịch vụ trò chơi của Play trong Play Console, trò chơi của bạn sẽ có một mã dự án được liên kết với Dịch vụ trò chơi của Play. Bằng mã dự án này (có trong trang Cấu hình của Dịch vụ Play Games trong Play Console), hãy cập nhật manifest.xml của trò chơi.

Nội dung ví dụ manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
    <Application>
        <PackageName>com.example.package</PackageName>
        <PlayGamesServices>
            <ProjectId>123456789</ProjectId>
        </PlayGamesServices>
    </Application>
</Manifest>

Bước 2: Yêu cầu quyền truy cập vào Recall khi đăng nhập

Khi trò chơi của bạn đang xử lý một quy trình đăng nhập (ví dụ: thêm tài khoản trong trò chơi), hãy yêu cầu quyền truy cập Recall bằng cách sử dụng GamesRecallClient::RequestRecallAccess().

Lệnh gọi này trả về một mã phiên do phụ trợ của bạn dùng để thực hiện các lệnh gọi phía máy chủ đến Google nhằm liên kết và huỷ liên kết tài khoản trong trò chơi với người dùng Dịch vụ trò chơi của Play.

auto promise = std::make_shared<std::promise<RecallAccessResult>>();
games_recall_client.RequestRecallAccess(params, [promise](RecallAccessResult result) {
   promise->set_value(std::move(result));
});

auto recall_access_result = promise->get_future().get();
if (recall_access_result.ok()) {
   auto recall_session_id = recall_access_result.value().recall_session_id;
   // Pass the recall session ID to your backend game server so it can query
   // for an existing linked in-game account.
   // - If you discover an existing linked in-game account, continue to sign-in
   //   the in-game account. This provides a seamless cross-device sign-in
   //   experience.
   // - If there is not an existing linked in-game account, when the user
   //   completes the sign-in using your in-game account system record the
   //   account linking with Play Games Services Recall. This helps to provide
   //   a seamless cross-device sign-in experience when the user returns on a
   //   different device or after re-installing your game on the same device.
} else {
   // Handle the error
}

Bước 3: Xử lý mã phiên Recall

Sau khi trò chơi có mã nhận dạng phiên Recall và đã chuyển mã nhận dạng này đến máy chủ phụ trợ của trò chơi, hãy sử dụng API REST phía máy chủ của Play Games để:

  • Truy vấn các tài khoản đã liên kết hiện có trong trò chơi bằng cách sử dụng recall.retrieveTokens
  • Thêm hoặc cập nhật các tài khoản được liên kết trong trò chơi bằng biểu tượng recall.linkPersona
  • Xoá tài khoản trong trò chơi được liên kết bằng cách sử dụng recall.unlinkPersona

Để biết hướng dẫn chi tiết hơn về quy trình tích hợp phía máy chủ, hãy xem tài liệu hướng dẫn cách sử dụng Recall API trong máy chủ trò chơi.