Unity

【Unity】AndroidでSign in with Appleの実装を解説

UnityでAndroid用にSign in with Appleを実装し、Firebase Authと連携していく手順を解説します。

 

iOSでSign in with Appleを実装する方法はコチラ

【Unity】iOSでSign in with Appleの実装を解説UnityでiOS向けのSing in with Appleを実装し、FirebaseAuthと連携していく方法を解説します。 とても...

 

 

前提として、「Firebaseにアプリのプロジェクトを作成」し、かつ、「iOSの開発ライセンスも取得済み」とします。

 

FirebaseでSign In with Appleを有効化

Firebaseで該当プロジェクトを開き、AuthenticationメニューのSign-in methodタブから「新しいプロバイダを追加」ボタンを押し、Sign In with Appleを追加します。

Sign In with Appleを有効化する画面の下にある認証コールバックURLは後ほど使うのでコピーしておきます。

 

iOSアプリを登録

AndroidでしかSign In with Appleを使わなくても、iOSアプリのID登録が必要になります。

Apple DeveloperサイトのCertificates, Identifiers & Profiles (証明書、ID、プロファイル)ページのIdentifiersを選び、上の+ボタンを押します。

次の画面でApp IDsを選択し、Continue。

 

次の画面でAppを選択し、Continue

次の画面でDescription(表示名)と、Bundle IDを適当に入れたあと、下に並んでいる機能一覧からSign In with Appleにチェックを入れて、Continueを押して、最後にRegisterを押し、iOSアプリをまず登録します。

 

 

Service IDの登録

次にAndroid環境でSign In with Appleを利用するためのService ID登録をします。

Apple DeveloperサイトのCertificates, Identifiers & Profiles (証明書、ID、プロファイル)ページのIdentifiersを選び、上の+ボタンを押します。

 

Services IDs、を選んで、Continue。

 

Description(表示名)と、任意のIDを入れて、Continue。

Registerを押して登録します。

 

登録すると、ID一覧が表示されるので、今登録したIDを選んで、Sign in with Appleを選び、Configure。

Primary App IDに、最初に登録したiOSアプリを、Domains and Subdomainsには、FirebaseでSign In with Appleを有効化した際にコピーした認証コールバックURLのドメインとサブドメインを(例: hogeapp.firebaseapp.comの場合は、「firebaseapp.com,hogeapp.firebaseapp.com」と記入)、Return URLsには、認証コールバックURLを入れて、Next

Done。
最後にSaveを押して、登録完了。

 

登録したService IDは、後ほど使うので、コピーしておきます。

 

秘密鍵の作成

次に、Sign In with AppleをOAuth2で行うための秘密鍵を作成します。

Apple DeveloperサイトのCertificates, Identifiers & Profiles (証明書、ID、プロファイル)ページのKeysを選び、上の+ボタンを押します。

 

Key Nameに適当な名前を入れ、Sign in with Appleにチェックを入れたら、Configure。

 

Primary App IDの欄で、最初に登録したiOSアプリを選択して、Save。

 

Continueが押せるようになるので、Continue。

Register。

完了画面のKey IDをコピー。Downloadボタンを押して、秘密鍵ファイルをダウンロードします。

 

各項目をFirebaseに登録

最後に、Firebaseの該当プロジェクトのSign In with Apple欄を選び、Apple Developerページで登録した各項目を入力します。

AppleチームIDは、Apple Developerページの右上に表示されています。

 

Sign In with Appleの実装

FirebaseAuthパッケージの導入

以下のリンクから最新版のFirebase Unity SDKをダウンロードします。
今回はバージョン11.2.0を導入しています。

既に他のFirebaseパッケージを導入済の場合は同じバージョンのFirebaseAuthパッケージを入れるか、最新のパッケージを全て入れ直してください。
そうしないとエラーで動きません。

ダウンロードしたら解凍して、FirebaseAuth.unitypackage をimportします。

 

C#の実装

Firebase Authを使って、OAuth2でSign In with Appleを実行し、FirebaseAuthと連携させます。

using UnityEngine;
using Firebase.Auth;
using Firebase.Extensions;

public class TestController : MonoBehaviour
{
    private FirebaseAuth auth;
    Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther;

    private void Start()
    {
        // FirebaseAuthの初期化
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task =>
        {
            dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                auth = FirebaseAuth.DefaultInstance;
            }
            else
            {
                Debug.Log($"error: {dependencyStatus}");
            }
        });
    }



    public void SignInWithApple()
    {
        // Apple認証開始
        Firebase.Auth.FederatedOAuthProviderData providerData = new Firebase.Auth.FederatedOAuthProviderData();
        providerData.ProviderId = "apple.com";
        Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider();
        provider.SetProviderData(providerData);

        auth.SignInWithProviderAsync(provider).ContinueWithOnMainThread(task =>
        {
            if (task.IsCanceled)
            {
                Debug.Log($"canceled");
                return;
            }

            if (task.IsFaulted)
            {
                Debug.Log($"error: {task.Exception}");
                return;
            }

            // 認証成功
            Firebase.Auth.AuthResult authResult = task.Result;

            // FirebaseAuth連携
            auth.SignInWithCredentialAsync(authResult.Credential).ContinueWith(authTask =>
            {
                if (authTask.IsCanceled)
                {
                    Debug.Log($"LinkWithCredentialAsync Cancelled");
                }
                else if (authTask.IsFaulted)
                {
                    Debug.Log($"LinkWithCredentialAsync Faulted");
                }
                else
                {
                    Debug.Log($"LinkWithCredentialAsync Complete!");
                }
            });
        });
    }
}

 

すべての手順を正しく実行できていれば、次のようにSign In with Appleの画面が表示され、ログインに成功すると、FirebaseにAppleIDと連携したアカウントが作成されます。