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と連携していく方法を解説します。 とても...

Googleログインの実装はコチラの記事を参照してみてください。

【Unity】iOSネイティブ連携でGoogle Sign Inを実装する方法UnityでGoogle Sign Inを実装する場合、Google公式のライブラリを利用するのが一般的です。 しかし、最...
【Unity】Androidネイティブ連携でGoogle Sign Inを実装する方法UnityでGoogle Sign Inを実装する場合、Google公式のライブラリを利用するのが一般的です。 しかし、最...

 

 

前提として、「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と連携したアカウントが作成されます。