【Firebase】Firebase Authで「Domain not whitelisted by project」を踏んだ理由が意外な理由だった話

投稿者:

はじめに

ちょっと気づくのに時間がかかり手こずった記念。

前提

・定数は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
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”

https://stackoverflow.com/questions/51374411/firebase-says-domain-not-whitelisted-for-a-link-that-is-whitelisted

上記の様に言われたので、Auth のログイン認証の承認済みドメインに登録。
…改善しねえ…。

次にactionCodeSettings.urlに格納しているURLを疑う。

自己解決しました。

1.実装ミス
actionCodeSetting.url = URL(fileURLWithPath: “http://XXXXXX/XXX/”) 
→ actionCodeSetting.url = URL(string: “http://XXXXXX/XXX/”) 
2.Authenticationにドメインを追加していなかった

https://teratail.com/questions/114548

https://hogehoge-ba123.firebaseio.com とか言うのを https://hogehoge-ba123.firebaseapp.comに読み替えてアクセス…404、だとぉ?

ならば…と、開発環境と運用環境のfirebaseプロジェクト全体を見直す。

解決

プロジェクトの設定→クラウドメッセージング→iOSアプリの設定 の、通知に使うAPNs証明書が、運用環境ではブランク。
上司に作ってもらってSlackでアーカイブもらっといてまだ反映してないんだけど、…もしやこれか?

これだったw orz
と言うわけで、開発にかかる前に証明書は耳を揃えてもらっておかないといかんと言う話でした。

コメントを残す