はじめに
ちょっと気づくのに時間がかかり手こずった記念。
前提
・定数はConst.swiftに外出し
・Utility.debugLogはどこかからパクったんだけどデバッグウィンドウにファイル名称、行数込みで表示してくれる嬉しいfunction
・Const().actionCodeSettingsUrl = “https://hogehoge-ba123.firebaseio.com“←firebaseioとか聞いたことないドメインなので焦った
・self.showAlert()はAlert表示、およびその後の処理をまとめたもの
現象
・アカウント作成時に承認メールをもらうはずが、「Domain not whitelisted by project」と叱られた。
以下該当箇所のSwift。概ね公式のソースコードと変わらないですが。
この11行目で叱られます。
let actionCodeSettings = ActionCodeSettings() actionCodeSettings.url = URL(string: Const().actionCodeSettingsUrl) actionCodeSettings.handleCodeInApp = true actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!) actionCodeSettings.setAndroidPackageName(Const().package_name, installIfNotAvailable: false, minimumVersion: "12") Auth.auth().sendSignInLink( toEmail:email!, actionCodeSettings: actionCodeSettings) { error in if let error = error { Utility.debugLog(error.localizedDescription) ←ここで叱られた return } // The link was successfully sent. Inform the user. // Save the email locally so you don't need to ask the user for it again // if they open the link on the same device. UserDefaults.standard.set(email!, forKey: "Email") self.showAlert(alert_message:"登録メールアドレス宛に認証メールをお送り致しました。", flag: false) }
1. Go to Firebase Console
https://stackoverflow.com/questions/51374411/firebase-says-domain-not-whitelisted-for-a-link-that-is-whitelisted
2. Click Authentication Menu > Sign-in method tab
3. Scroll Down to Authorized domains
4. Click “Add domain” button, add your domain (website domain with parameter) and click “Add”
上記の様に言われたので、Auth のログイン認証の承認済みドメインに登録。
…改善しねえ…。
次にactionCodeSettings.urlに格納しているURLを疑う。
自己解決しました。
1.実装ミス
https://teratail.com/questions/114548
actionCodeSetting.url = URL(fileURLWithPath: “http://XXXXXX/XXX/”)
→ actionCodeSetting.url = URL(string: “http://XXXXXX/XXX/”)
2.Authenticationにドメインを追加していなかった
https://hogehoge-ba123.firebaseio.com とか言うのを https://hogehoge-ba123.firebaseapp.comに読み替えてアクセス…404、だとぉ?
ならば…と、開発環境と運用環境のfirebaseプロジェクト全体を見直す。
解決
プロジェクトの設定→クラウドメッセージング→iOSアプリの設定 の、通知に使うAPNs証明書が、運用環境ではブランク。
上司に作ってもらってSlackでアーカイブもらっといてまだ反映してないんだけど、…もしやこれか?
↓
これだったw orz
と言うわけで、開発にかかる前に証明書は耳を揃えてもらっておかないといかんと言う話でした。