質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

5142閲覧

【Firebase】【Swift】メール認証の本人確認メールのdynamic linkの設定

street

総合スコア34

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/02/21 14:13

編集2018/02/21 14:21

お世話になります。

Firebaseのメール認証で、本人確認メールのdynamic linkを設定し本人確認メールからアプリへ遷移リンクを設定するために実装しましたが、sendEmailVerificationにエラーが返ってきてしまい、本人確認メールが届きません。
手順と実装が正しいかどうか教えて頂きたいです。

なおアプリはまだAppStoreへはリリースしておりません。

■ 手順
Firebaseコンソールで以下を実施
・プロジェクトの設定より「バンドルID」「1344894983」「App ID Prefix」を設定
・Dynamic Linksで新しいダイナミックリンクを作成

■ 実装
・Associated DomainsをON、ドメインを追加
【AppDelegate】

swift

1import UIKit 2import Firebase 3@UIApplicationMain 4class AppDelegate: UIResponder, UIApplicationDelegate { 5 6〜省略〜 7 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 8 9 // ■ ダイナミックリンク用. 10 return application(app, open: url, 11 sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, 12 annotation: "") 13 14 //return true 15 } 16 17 18 func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 19 if (DynamicLinks.dynamicLinks()?.dynamicLink(fromCustomSchemeURL: url)) != nil { 20 // Handle the deep link. For example, show the deep-linked content or 21 // apply a promotional offer to the user's account. 22 // ... 23 return true 24 } 25 return false 26 } 27 28 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { 29 guard let dynamicLinks = DynamicLinks.dynamicLinks() else { 30 return false 31 } 32 let handled = dynamicLinks.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in 33 // ... 34 } 35 36 return handled 37 } 38}

【SignupViewController】

swift

1import Firebase 2 3class SignupViewController: UIViewController { 4 〜省略〜 5 private func signup_() { 6 guard let email = emailText.text else { return } 7 guard let password = passwordText.text else { return } 8 9 Auth.auth().createUser(withEmail: email, password: password, completion: { [weak self] (user, error) in 10 if nil == error { 11 12 let credential = EmailAuthProvider.credential(withEmail: email, password: password) 13 user?.reauthenticate(with: credential) { error in 14 let actionCodeSetting = ActionCodeSettings.init() 15 actionCodeSetting.handleCodeInApp = true 16 actionCodeSetting.url = URL(fileURLWithPath: "http://XXXXXX/XXX/") // ディープリンク 17 actionCodeSetting.setIOSBundleID("com.XXXX.XXXX") // バンドルID 18 user?.sendEmailVerification(with: actionCodeSetting, completion: { [weak self] (error) in 19 if nil == error { 20 print("成功") 21 } else { 22 print((error?.localizedDescription)!) 23 } 24 }) 25 } 26 } 27 }) 28 }

■ エラー内容
print((error?.localizedDescription)!)のエラー内容は
An internal error has occurred, print and inspect the error details for more information.
というもので、エラー内容から原因はわかりませんでした。

またFirebaseコンソール画面よりダイナミックリンクを確認したところ以下のワーニングがでていました。
ただコンソールではPrefixは設定済みなのになぜこんなワーニングがでているのかわかりません。
The dynamic link has 1 warning(s)
iOS app 'com.XXXX.XXXX' lacks App ID Prefix. UniversalLinks is not enabled for the app

Firebaseのヘルプを見ても正しく設定してとしか書かれておらず。。。
iOS app lacks App ID Prefix. UniversalLinks is not enabled for the app.
https://firebase.google.com/docs/dynamic-links/debug#ios-app-id-prefix-absent

解決手段がなく、かなりハマっています。。。
正しい設定をするためには何が足りていないのでしょうか。
お手数ですがご教示して頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

1.実装ミス
actionCodeSetting.url = URL(fileURLWithPath: "http://XXXXXX/XXX/")
→ actionCodeSetting.url = URL(string: "http://XXXXXX/XXX/")

2.Authenticationにドメインを追加していなかった

投稿2018/02/21 16:49

編集2018/02/21 16:50
street

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問