Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Xác thực trong Unity bằng các dịch vụ trò chơi của Google Play

Bạn có thể sử dụng dịch vụ Google Play Trò chơi để đăng nhập người chơi vào trò chơi Android được xây dựng trên Firebase và Unity. Để sử dụng dịch vụ Google Play Trò chơi, đăng nhập bằng Firebase, trước tiên hãy đăng nhập vào trình phát bằng Google Play Trò chơi và yêu cầu mã xác thực OAuth 2.0 khi bạn làm như vậy. Sau đó, chuyển mã xác thực cho PlayGamesAuthProvider để tạo thông tin xác thực Firebase, bạn có thể sử dụng thông tin này để xác thực với Firebase.

Trước khi bắt đầu

Thiết lập Unity

  1. Thêm tệp cấu hình Firebase và SDK Firebase Unity vào dự án Unity của bạn như được mô tả trong Thêm Firebase vào dự án Unity của bạn . Làm theo hướng dẫn dành cho Android.

    Đảm bảo nhập FirebaseAuth.unitypackage .

  2. Trong Unity Editor, bên dưới Cài đặt bản dựng> Cài đặt người chơi> Cài đặt khác, đặt tên gói Android cho trò chơi của bạn.

  3. Sau đó, trong Cài đặt bản dựng> Cài đặt trình phát> Cài đặt xuất bản , hãy chọn hoặc tạo kho khóa và khóa, sẽ được sử dụng để ký gói Android của bạn. APK của bạn phải được ký để đăng nhập Play Trò chơi hoạt động — yêu cầu này không chỉ áp dụng cho việc xuất bản mà còn áp dụng trong quá trình phát triển trò chơi của bạn.

Thiết lập dự án Firebase của bạn

  1. Trong bảng điều khiển Firebase , hãy chuyển đến dự án Firebase mà bạn đã đăng ký dự án Unity của mình.

  2. Đặt tệp tham chiếu SHA-1 cho trò chơi của bạn từ trang Cài đặt của bảng điều khiển Firebase, sử dụng khóa bạn đã đặt trong Unity.

    Bạn có thể lấy vân tay SHA-1 của khóa của mình bằng lệnh keytool :

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

    Ngoài ra, bạn có thể nhận được băm SHA chứng chỉ ký của bạn với gradle signingReport lệnh:

    gradlew signingReport

    APK của bạn phải được ký bằng khóa này, kể cả trong quá trình phát triển.

  3. Bật Google Play Trò chơi làm nhà cung cấp dịch vụ đăng nhập:

    1. Tìm mã ứng dụng khách máy chủ web của dự án và bí mật máy khách. ID ứng dụng khách của máy chủ web xác định dự án Firebase của bạn với các máy chủ xác thực của Google Play.

      Để tìm các giá trị này:

      1. Mở dự án Firebase của bạn trong trang thông tin đăng nhập bảng điều khiển API của Google .
      2. Trong phần ID ứng dụng khách OAuth 2.0 , hãy mở trang chi tiết về ứng dụng khách Web (do Dịch vụ của Google tạo tự động) . Trang này liệt kê bí mật và ID ứng dụng khách máy chủ web của bạn.
    2. Sau đó, trong bảng điều khiển Firebase , hãy mở phần Xác thực .

    3. Trên tab Phương thức đăng nhập, hãy bật nhà cung cấp dịch vụ đăng nhập Play Trò chơi . Bạn sẽ cần chỉ định ID ứng dụng khách máy chủ web và bí mật ứng dụng khách của dự án mà bạn nhận được từ bảng điều khiển API.

  1. Mở bảng điều khiển Google Play và nhấp vào Dịch vụ trò chơi .

  2. Nhấp vào Thêm trò chơi mới . Trong hộp thoại trò chơi mới, nhấp vào Tôi đã sử dụng API Google trong trò chơi của mình và nhấp vào tên dự án Firebase của bạn trong danh sách. Chọn một danh mục trò chơi, sau đó nhấp vào Tiếp tục để chuyển đến trang Chi tiết trò chơi.

  3. Ở cuối trang Chi tiết trò chơi, hãy đảm bảo rằng tất cả các API bắt buộc đều được bật.

  4. Sau đó, mở trang Ứng dụng được liên kết và nhấp vào Android . Chỉ định tên gói trò chơi của bạn và nhấp vào Lưu và tiếp tục . Bảng điều khiển sẽ hiển thị ID ứng dụng khách Android của bạn. Bạn có thể bỏ qua giá trị này.

  5. Mở lại trang Ứng dụng được liên kết và nhấp vào Liên kết ứng dụng khác> Web . Bạn sẽ sử dụng trang này để cho phép Firebase Auth truy xuất mã thông báo xác thực từ Google Play.

    Trong trường URL khởi chạy , chỉ định bất kỳ URL nào bạn kiểm soát, chẳng hạn như URL sử dụng miền firebaseapp.com của bạn: https://myfirebaseproject-1ac49.firebaseapp.com/ . URL này không cần phải hợp lệ, nhưng bạn phải chỉ định một giá trị khác với localhost .

    Sau đó, trên trang tiếp theo, nhấp vào Hiển thị ứng dụng và chọn và chọn ID ứng dụng khách máy chủ web của bạn. ID ứng dụng khách máy chủ web của bạn sẽ có URI chuyển hướng giống như https://myfirebaseproject-1ac49.firebaseapp.com/__/auth/handler .

  6. Trên các trang Sự kiện , Thành tíchBảng xếp hạng , hãy tạo bất kỳ tài nguyên Play Trò chơi nào bạn muốn sử dụng với trò chơi của mình (nếu bạn không muốn sử dụng ngay lập tức, bạn có thể tạo mục nhập giữ chỗ). Sau đó, trên bất kỳ trang Sự kiện , Thành tích hoặc Bảng xếp hạng nào, hãy nhấp vào Nhận tài nguyên và sao chép đoạn mã tài nguyên Android ở một nơi thuận tiện. Bạn sẽ cần đoạn mã để thiết lập plugin Dịch vụ trò chơi của Google Play.

    Đoạn mã tài nguyên trông giống như ví dụ sau:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    Google Play game services IDs.
    Save this file as res/values/games-ids.xml in your project.
    -->
    <resources>
      <!-- app_id -->
      <string name="app_id" translatable="false">123456789000</string>
      <!-- package_name -->
      <string name="package_name" translatable="false">com.example.game</string>
      <!-- event Wiped Raid -->
      <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string>
    </resources>
    
  7. Trên trang Thử nghiệm , hãy đưa vào danh sách trắng các địa chỉ email của bất kỳ người dùng nào cần có thể đăng nhập vào trò chơi của bạn trước khi bạn phát hành trò chơi đó trên Cửa hàng Play.

Tích hợp đăng nhập Play Trò chơi vào trò chơi của bạn

  1. Tải xuống phiên bản mới nhất của plugin Play Trò chơi cho Unity và giải nén nó.

  2. Nhập gói Unity của plugin vào dự án Unity của bạn. Bạn có thể tìm thấy gói Unity trong thư mục current-build của kho lưu trữ phát hành.

  3. Thiết lập plugin Play Trò chơi:

    1. Nhấp vào Cửa sổ> Google Play Trò chơi> Thiết lập> Thiết lập Android để mở màn hình Cấu hình Android .
    2. Dán đoạn mã tài nguyên Android mà bạn nhận được từ Play Console vào trường Định nghĩa tài nguyên .
    3. Dán ID ứng dụng khách máy chủ web của bạn mà bạn đã cung cấp khi bật đăng nhập Play Trò chơi trong bảng điều khiển Firebase, vào trường ID ứng dụng.
    4. Nhấp vào Thiết lập .
  4. Trong trò chơi của bạn, hãy định cấu hình ứng dụng khách Play Trò chơi với cài đặt RequestServerAuthCode được bật:

    using GooglePlayGames;
    using GooglePlayGames.BasicApi;
    using UnityEngine.SocialPlatforms;
    using System.Threading.Tasks;
    
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
        .RequestServerAuthCode(false /* Don't force refresh */)
        .Build();
    
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.Activate();
    
  5. Sau đó, khi người chơi chọn đăng nhập bằng Play Trò chơi, hãy gọi Social.localUser.Authenticate() :

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

Xác thực bằng Firebase

Sau khi thêm thông tin đăng nhập Play Trò chơi vào trò chơi của mình, bạn có thể sử dụng mã xác thực từ dịch vụ Play Trò chơi để xác thực với Firebase.

  1. Sau khi người chơi đã đăng nhập thành công bằng Play Trò chơi, trong trình xử lý tiếp tục đăng nhập, hãy nhận mã xác thực cho tài khoản của người chơi:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Sau đó, trao đổi mã xác thực từ các dịch vụ Play Trò chơi để lấy thông tin đăng nhập Firebase và sử dụng thông tin đăng nhập Firebase để xác thực người chơi:

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Bước tiếp theo

Sau khi người dùng đăng nhập lần đầu tiên, một tài khoản người dùng mới sẽ được tạo và liên kết với ID Play Trò chơi của họ. Tài khoản mới này được lưu trữ như một phần của dự án Firebase của bạn và có thể được sử dụng để xác định người dùng trên mọi ứng dụng trong dự án của bạn.

Trong trò chơi của mình, bạn có thể lấy Firebase UID của người dùng từ đối tượng Firebase.Auth.FirebaseUser :

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  string playerName = user.DisplayName;

  // The user's Id, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server, if you
  // have one; use User.TokenAsync() instead.
  string uid = user.UserId;
}

Trong Cơ sở dữ liệu thời gian thực Firebase và Quy tắc bảo mật lưu trữ đám mây, bạn có thể lấy ID người dùng duy nhất của người dùng đã đăng nhập từ biến auth và sử dụng nó để kiểm soát dữ liệu nào mà người dùng có thể truy cập.

Để nhận thông tin người chơi Play Trò chơi của người dùng hoặc truy cập các dịch vụ Play Trò chơi, hãy sử dụng các API do plugin Play Trò chơi cung cấp.

Để đăng xuất một người dùng, hãy gọi SignOut() :

auth.SignOut();