Trang này giải thích cách triển khai Recall API trong trò chơi của bạn. Bài hát đầu tiên thiết lập máy chủ và ứng dụng khách của trò chơi để hỗ trợ API, sau đó thực hiện cách lưu trữ và truy xuất mã thông báo.
Thiết lập máy chủ trò chơi
Thiết lập máy chủ trò chơi để thực hiện lệnh gọi Recall API đến máy chủ của Google.
Thiết lập dự án Dịch vụ trò chơi của Play (PGS)
(Nếu chưa hoàn tất) Làm theo hướng dẫn trong bài viết Thiết lập Dịch vụ trò chơi của Google Play.
Thiết lập tài khoản dịch vụ cho trò chơi
Làm theo hướng dẫn về cách tạo tài khoản dịch vụ. Sau khi hoàn tất hướng dẫn, bạn sẽ có một tệp JSON chứa thông tin đăng nhập tài khoản dịch vụ.
Tải thư viện Java phía máy chủ xuống cho Dịch vụ trò chơi của Play
Tải google-api-services-games
mới nhất xuống
thư viện
rồi tải tệp này lên máy chủ của bạn.
Chuẩn bị thông tin đăng nhập cho các lệnh gọi Recall API
Xem phần Chuẩn bị tạo API được uỷ quyền cuộc gọi để biết thêm ngữ cảnh.
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();
Thiết lập ứng dụng trò chơi
Thiết lập ứng dụng trò chơi để truy xuất ID phiên hoạt động gọi lại mà máy chủ của bạn sử dụng để giao tiếp với các máy chủ của Google.
SDK Java
Thiết lập SDK Java trong ứng dụng khách,
và đừng quên đưa vào
com.google.android.gms:play-services-games-v2:19.0.0
và
com.google.android.gms:play-services-tasks:18.0.2
trở lên trong Gradle của bạn
.
Để giao tiếp với máy chủ của Google với thông tin chính xác, hãy yêu cầu Gọi lại ID phiên từ SDK ứng dụng mà bạn gửi đến máy chủ trò chơi của mình:
Kotlin
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener { recallAccess -> val recallSessionId: String = recallAccess.getSessionId() } // Send the recallSessionId to your game server
Java
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener( recallAccess -> { String recallSessionId = recallAccess.getSessionId(); // Send the recallSessionId to your game server });
Sử dụng Recall API trong máy chủ trò chơi
Sau khi định cấu hình máy chủ và ứng dụng khách, bạn có thể gửi recallSessionID
từ ứng dụng trò chơi đến máy chủ trò chơi rồi làm theo hướng dẫn bên dưới để bắt đầu sử dụng API Java để lưu trữ, truy xuất hoặc xoá Mã gọi lại phía máy chủ.
Lưu trữ mã
Lưu trữ persona và mã thông báo trò chơi của người dùng bằng cách sử dụng đối tượng LinkPersonaRequest
.
Sử dụng GoogleCredential
để gọi cho Google
API.
Để tuân theo số lượng giá trị riêng biệt 1:1
quy tắc ràng buộc, bạn có thể
mỗi lần chỉ liên kết một persona với một hồ sơ PGS và ngược lại. Thiết lập
chính sách giải quyết trong trường hợp hồ sơ PGS này đã được liên kết với một hồ sơ PGS khác
chân dung độc giả.
Nếu muốn, bạn có thể chọn thiết lập TTL trên mã thông báo. Thao tác này sẽ khai báo khoảng thời gian
mã thông báo hợp lệ bằng cách sử dụng
Durations
. Bạn có thể chọn đặt giá trị này bằng cách sử dụng SetTtl()
(như trình bày dưới đây). Thao tác này sẽ đặt
ngày hết hạn từ khoảng thời gian được chỉ định trong phương thức, hoặc
setExpireTime()
để giúp bạn đặt thời gian chính xác cho thời điểm mã thông báo hết hạn.
Bạn phải mã hoá persona và mã thông báo của trò chơi và không đưa vào bất kỳ thông tin nhận dạng cá nhân nào. Chuỗi mã thông báo và persona có thể dài tối đa 256 ký tự và trong mỗi trò chơi, nhà phát triển có thể lưu trữ tối đa 20 mã thông báo hoặc persona cho mỗi người chơi.
Tại một thời điểm, chỉ có thể lưu một mã thông báo cho mỗi persona của một người chơi. Nếu bạn thử để lưu trữ một mã thông báo khác có cùng persona, hệ thống sẽ ghi đè mã ban đầu mã thông báo.
import com.google.api.services.games.Games.Recall.LinkPersona;
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
}
Truy xuất mã
Để truy xuất mã gọi lại, hãy lấy recallSessionId
từ ứng dụng và
truyền mã đó vào API retrieveTokens
:
import com.google.api.services.games.Games.Recall.RetrieveTokens;
// ...
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
}
Xoá mã gọi lại
Nếu cần, bạn cũng có thể xoá mã gọi lại bằng lệnh gọi sau:
import com.google.api.services.games.Games.Recall.UnlinkPersona;
// ...
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();
// Confirm that the unlinking process completed successfully.
boolean unlinked = unlinkPersonaResponse.isUnlinked();
Bật chế độ không có hồ sơ
Bạn có thể bật chức năng Recall API có giới hạn cho người dùng không có hồ sơ PGS bằng cách làm theo các bước sau:
- Bật tính năng gọi lại không hồ sơ cho dự án trò chơi PGS trong Nhà phát triển Play
Bảng điều khiển.
- Vui lòng xem các điều khoản bổ sung được mô tả ở phần sau của phần này.
- Thêm thẻ siêu dữ liệu sau vào ứng dụng tệp kê khai:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Điều khoản bổ sung
Ngoài việc phải tuân theo Điều khoản của Dịch vụ trò chơi của Play Service, bạn đồng ý rằng nếu bạn sử dụng Recall API cho người dùng không có hồ sơ PGS. Dịch vụ này cho phép chia sẻ dữ liệu của người dùng cuối trên Google mà họ không có hồ sơ Dịch vụ trò chơi của Play, trước khi chia sẻ dữ liệu đó với Google, bạn phải cung cấp cho người dùng cuối thông báo thích hợp mô tả 1) việc bạn chia sẻ dữ liệu với Google để cho phép của Play Games tính năng liên kết tài khoản, 2) các chế độ cài đặt có thể quản lý chẳng hạn như chia sẻ qua chế độ cài đặt của Play Games và 3) quá trình xử lý những dữ liệu đó theo Chính sách quyền riêng tư và có được người dùng cuối thích hợp đồng ý cho việc chia sẻ đáp ứng tất cả yêu cầu pháp lý hiện hành.