Giới thiệu
Tuần trước mình có thử sử dụng Google Play Game Service (GPGS) làm tùy chọn để đăng nhập cho Playfab. Lần cuối mà mình sử dụng GPGS là khoảng 4 năm trước, ấn tượng hồi đấy là nó
khó sử dụng việc setup rất rắc rối nữa cộng với việc hạn chế về việc lưu dữ liệu nên mình không sử dụng nó. Điểm cộng lớn nhất chắc là nó free.
Tại sao chúng ta cần login bằng GPGS?
Nếu bạn xem qua sơ đồ bên dưới ta sẽ thấy rằng lần đầu mở game lên thì chúng ta sẽ chỉ login silent mà thôi, sau đấy user sẽ chọn liên kết với các tài khoản social như Facebook,
Google …
với Facebook nó có một điểm yếu là policy của nó khiến dự án của bạn có thể DeActive khiến user mất tài khoản. Công ty mình có 6 dự án và 5 cái bị deactive facebook rồi .
Lưu ý là GPGS chỉ dành riêng cho Android vì vậy nên nó sẽ không hoạt động trên iOS cũng như PC.
Ngoài ra Google và GPGS là hai cách thức login hoàn toàn khác nhau. Trong bài viết này mình chỉ hướng dẫn với GPGS.
Môi trường
- Unity 2022.3.2f1
- Google Play Game Service v11.0.1
- Playfab 2.172.230721
- Tài khoản Google Play Console
- Tài khoản Google Cloud Console
Cài đặt
Tạo project Unity
- Bạn cần tạo một project Unity nếu chưa có và đổi platform sang Android.
- Điền Product Name và Package Name, ở trong ví dụ này Product Name và Package Name của mình là
Login GPGS
vàcom.pancake.login
- Đảm bảo tùy chọn minify bị tắt trong publishing setting
- Import Google Play Game Service package, bạn có thể tìm thấy unity package của nó trong folder
curent-build
- Import PlayFab SDK, bạn có thể chọn cài bằng PlayFab Unity Editor Extension hoặc tải trực tiếp SDK package rồi cài ở đây
- Nếu nó có hỏi bạn fore resolve thì chọn không (disabled)
Tạo project trên Google play console
Bạn đăng nhập vào google play console và chọn tạo app mới. Điền các thông tin như hình sau rồi nhấn nút create app thôi.
Tạo project trên Google Cloud Console
Nếu bạn chưa tạo project trên Google Cloud hoặc chưa tạo project firebase, mặc định nếu tạo project firebase thì nó cũng sẽ tạo project google cloud tương ứng.
Nếu bạn tạo project google cloud trước thì lúc tạo firebase bạn có thể chọn project google cloud đã tồn tại để tạo firebase.
Tạo project trên Playfab
Việc tạo project trong playfab khá đơn giản bạn chỉ cần điền tên ứng dụng là xong.
Lấy SHA-1 certificate fingerprint
Ở đây thì chúng ta có hai loại certificate là Upload key
và App signing key
. SHA-1 của Upload key
thì bạn có thể tự lấy thông qua keystore của bạn bằng cách chạy câu lệnh sau
bằng terminal.
- Đầu tiên bạn cần bật terminal trong folder bin của jdk, lưu ý là nếu bạn tạo keystore bằng unity 2021 trở xuống thì do các bản này unity vẫn sử dụng JDK 8.
Còn từ unity 2022 đã dùng JDK 11 thì key store được tạo bởi JDK 11 (unity 2022) sẽ không sử dụng JDK 8 để phân tích thông tin được nên khi chạy câu lệnh với terminal sẽ hiển thị lỗi. Nghĩa là nếu bạn tạo keystore bằng bản JDK nào thì phải dùng bản JDK đấy để đọc thông tin.
|
|
Còn App signing key
sẽ được google tạo ra khi bạn tải bản build của mình lên google play console, bạn có thể build bản internal testing rồi tải lên google play console để lấy
được các thông tin này.
Bạn Có thể tìm thấy chúng trong App signing
trong mục Setup
Tạo credentials
Oke sau khi bạn đã có được 2 cái SHA-1 này rồi chúng ta sẽ sang bước tiếp theo.
Quay lại với Google Cloud Console. Bạn hãy mở mục APIs & Services
lên.
Sau đấy chọn menu Credentials
ở menu bên tay trái
Giờ chúng ta cần tạo Credentials
với loại là OAuth client ID
Chọn loại Applicate là Android điền tên giống với tên ứng dụng, package name giống package name của project ở đây là com.pancake.login
, SHA-1 bạn điền SHA-1 đã lấy được từ bước trước đấy.
Lưu ý là chúng ta có 2 cái SHA-1 vì vậy chúng ta sẽ tạo 2 cái credentials với loại là OAuth client ID
cho application là Android. Name và Package name vẫn điền giống nhau nhưng chỉ khác SHA-1 certificate fingerprint mà thôi.
Tiếp theo chúng ta tạo tiếp một OAth Client ID
với Application type là Web Application
. Name vẫn điền giống tên ứng dụng của bạn trong ví dụ này là Login GPGS
.
-
Authorized JavaScript origins
nhấn vào button add URI và ở mục này chúng ta sẽ điềnAPI endpoint
lấy được từ Playfab. Bạn có thể tìm thấy nó trong menuTitle Settings > API Features > API endpoint
. Nó sẽ có dạng làhttps/[title id].playfabapi.com
-
Authorized redirect URIs
nhấn vào button add URI và ở mục này chúng ta sẽ điền chính xác làhttps://oauth.playfab.com/oauth2/google
|
|
Cài đặt OAuth consent screen
Ngay bên dưới menu Credentials là menu OAuth consent screen
chọn user type là external và nhấn create
Điền tên ứng dụng, user support email và logo ứng dụng của bạn, developer contect infomation cũng điền email của bạn vào. Authorized domains bạn có thể bỏ qua không cần điền vì nó sẽ tự điền dựa vào creadentials đã tạo trước đó rồi.
Giờ thì bạn nhấn save and continue để sang bước tiếp theo thôi.
Nhấn vào button Add or remove scopes sau đấy tìm kiếm với tên là Google Play Game Services
rồi chọn scope là ../auth/games
, ../auth/games_lite
và ../auth/drive.appdata
.
Nhấn button Update sau đấy nhấn Save And Continue để sang bước tiếp theo.
Add test user nếu có, đây là các tài khoản đã liên kết với Google và Goolge Play Games. Bạn có thể tạm bỏ qua bước này.
Sau đấy tiếp tục nhấn nút Save And Continue.
Như vậy là chúng ta đã xong cài đặt trên Google Cloud Console
. Giờ chúng ta sẽ quay lại Google Play Console
.
Cấu hình Google Play Game
Trong menu bên tay trái trong Google Play Console
tìm đến mục Play Game Services
và chọn Configuration
Lúc này bạn có thể chọn Cloud project đã tạo ở bước trước đó. nếu cloud project đó đã được link với một project khác nó sẽ không hiện ở đây nữa.
Bạn sẽ cần cài đặt theo các yêu cầu ở đây.
- Bạn sẽ cần upload một bản aab lên bao gồm gpgs sdk đã được build kèm theo.
- Cài đặt credential liên kết với credential được tạo ở google cloud console trước đấy. Ở bước này bạn cần tạo 3 credential với 2 cái cho Android và 1 cái cho Game server.
Ỏ đây mình đã thêm cả 3 cái nên không có OAuth client nào hiển thị để chọn ở đây.
Sau khi đã cài đặt xong chúng ta sẽ publish configuation cho Google play Game service
Cài đặt add-on google cho PlayFab
Đăng nhập vào PlayFab di chuyển đến mục Add-ons chọn Google.
Google App Package ID
: điền package name project của bạnGoogle App License Key
: điền Base64-encoded RSA public key được tìm thấy trong licensing trong menuMonetization setup
Google OAuth Client ID
: điềnClient ID
của credentials bạn tạo với dạng làWeb Application
Google OAuth Client Secret
: điềnClient secret
của credentials bạn tạo với dạng làWeb Application
Nhấn button save để lưu setting lại.
Quay lại với Unity
Tạo PlayFabSharedSettings
thông qua menu PlayFab > MakePlayFabSharedSettings
sau đấy điền title id
và development secret key
Tiếp theo chúng ta sẽ thực hiện setup cho Google Play Games trong Unity. Bật bảng cài đặt thông qua menu Window > Google Play Games > Setup > Android Setup
.
- Resource definition bạn lấy từ Google play console bằng button Get Resources
- Client ID sẽ điền
Client ID
củaWeb Application
Giờ nhấn setup
- Force Resolve thông qua menu
Assets > External Dependency Manager > Android Resolver > Force Resolver
- Tạo Script có tên là
GooglePlayGameManager
|
|
Gắn script GooglePlayGameManager
vào một GameObject trong scene sau đó lưu lại và build aab sau đó upload lên internal testing và chạy thử
Bạn sẽ nhận được đoạn log như dưới đây thì chứng tỏ là mọi thứ đã thành công.