Sign in with Appleのデバッグで困ったことと解決方法

## はじめに
最近、久しぶりに「Sign in with Apple」を実装する機会があったのですが、
デバッグをする際にハマったので備忘録も兼ねての投稿です！

実装の仕方については、Firebaseのドキュメントを参考にして
あまり躓くこともなかったので本記事では詳細は割愛しますm(_ _)m
参考情報：[Firebase iOSでAppleを使用して認証する](https://firebase.google.com/docs/auth/ios/apple)

## デバッグで困ったこととその解決方法

### 1. Simulatorで認証が終わらない?!
iOS14のSimulatorでSign in with Appleを実行しようとしたら、
パスワードを入力するところまではできるのですが、
パスワードを入力して確定しても認証が終わらず、ずっとインジケーターが回るだけの状態になってしまいました。

![ios14_認証終わらない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/b072e615-f2e7-5704-7910-f5b6cd051ab5.png)

### Simulatorで認証が終わらない?! - 【解決方法】
これは、どうやらiOS14のSimulatorがバグっているようでして、
解決方法というか回避方法なのですが、
実機でデバッグをするか、Simulatorの場合はiOS13にすると
うまく認証することができました:metal:

参考情報：
[Sign In With Apple Not Working on Simulator for Anyone on iOS 14
](https://developer.apple.com/forums/thread/668155)


### 2. SimulatorでApple IDのサインアウトが終わらない?!
Simulator内の設定アプリからApple IDにサインインはできたのですが、
使い終わってサインアウトしようとしたら、うまくサインアウトできませんでした。

iOS13ではサインアウトボタンは選択できたのですが、「Removing iCloud data...」の状態から
ずっと画面が切り替わらなくなってしまいました。
時間がかかっているだけかなと思い、しばらく放置したのですが一向に画面が切り替わらず、、
途中で諦めて設定アプリをタスクキルしてみましたが、サインアウトは完了していませんでした。

iOS14の場合は、サインアウトボタンがグレーアウトされていて、選択すらできませんでした。。

|iOS13|iOS14|
|:--:|:--:|
|![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/2b3264af-634d-e55f-fdb2-27a8374c9e94.png)|![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/8172e825-6477-e1d5-194b-d6f7fbec60eb.png)|

### SimulatorでApple IDのサインアウトが終わらない?! - 【解決方法】

こちらの解決方法は、Simulator内の設定から実行するのではなく、
Simulatorのメニューからデータを削除することでした。

Device > Erase All Content and Settings... を選択すると、
Simulatorにダイアログが表示されるので「Erase」を選択します。
そうすると、Simulatorが再起動されて、無事に設定が初期化されてサインアウトされていました！:metal:

ちなみに、設定が初期化されるだけでなく、デバッグでインストールしていたアプリもアンインストールされていました。

![スクリーンショット 2021-08-08 11.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/b8f597b6-a1fd-22d7-d03e-98832f010ad7.png)

![スクリーンショット 2021-08-08 11.06.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/656cf0bf-c753-dc08-55de-d6c5e031f164.png)

参考情報：
[I can't log out of iCloud in Simulator](https://developer.apple.com/forums/thread/131408)

### 3. アプリをアンインストールしても初回認証の確認ができない?!
こちらは、実機・Simulator問わずハマったのですが、、
初めてSign in with Appleを実行すると、
氏名を編集したり、メールアドレスを共有するか非公開にするか選択できる画面が表示されます。

![初回.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/a628edcf-cd8a-6850-e7b1-0aa429d80ddd.png)

この状態を再度作り出そうと思って、アプリをアンインストールしてみたのですが、
Apple IDとアプリの紐付けは無くならず、
Sign in with Appleを利用した情報が残っているようで、
再インストールしてSign in with Appleを実行しても、上の画面は表示されずそのまま認証が進んでしまいました。

### アプリをアンインストールしても初回認証の確認ができない?! - 【解決方法】
Sign in with Appleを利用した情報は設定アプリから削除できました。

\> 設定アプリ 
**\> 一番上のApple アカウント（アカウント名が記載されている欄）を選択**
**\> 「パスワードとセキュリティ」 を選択**

|1. アカウント名を選択|2. 「パスワードとセキュリティ」 を選択|
|:--:|:--:|
|![IMG_1437.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/0ac1c52d-5ce6-089b-5a4d-c5242c185b7c.png)|![IMG_1438.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/24251e8c-de58-bbfd-cc2f-5d3b0f73e543.png)|

**\> 「Apple IDを使用中のApp」を選択**
**\> 対象のアプリ名を選択**

|3. 「Apple IDを使用中のApp」を選択|4. 対象のアプリ名を選択|
|:--:|:--:|
|![IMG_1439.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/4fef009d-d536-2881-fd00-77671149f378.png)|![IMG_1440.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/e4b9c2b5-690f-7c91-3c25-721a48f52143.png)|


**\> 「Apple IDの使用を停止する」を選択**
**\> ダイアログの「使用を停止」を選択**

|5. 「Apple IDの使用を停止する」を選択|6. 「使用を停止」を選択|
|:--:|:--:|
|![IMG_1441.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/d60a9a56-0f2e-01be-fe05-49ae74f44ad8.png)|![IMG_1442.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/32605fc9-633d-9098-8a30-926ac008395b.png)|

これで、Sign in with Appleを利用した情報が削除されて、初回の状態でデバッグできるようになりました:metal:

参考情報：
[Flow when user delete their account in-app](https://developer.apple.com/forums/thread/126730)

## さいごに
サインイン周りは、一度実装すると改修する機会は少ないと思うので滅多に触りませんが
デバッグでいろいろハマって大変でした。
iOS15以降ではSimulatorでもSign in with Appleを実行できるようになってくれるといいですね・・・:joy: