重新验证后的空白页面使用电话号码Swift在iOS上使用Firebase进行身份验证

时间:2018-05-26 07:29:52

标签: ios swift firebase firebase-authentication

重新验证后,页面只返回空白。它没有做下一步。

屏幕截图

Screen Shot

4 个答案:

答案 0 :(得分:1)

对于空白的验证码页面问题,我可以通过做以下三件事来解决:

第一件事-

GoogleSerivce-Info.plist文件中,确保将REVERSED_CLIENT_ID添加到项目via the URL types using this中。在此处执行第二步的第一部分:向Xcode项目中添加自定义URL方案

第二件事-

  1. 在项目导航器中,选择blue project icon

  2. 选择Capabilities

  3. 打开Background Modes

  4. 选择Background fetch

enter image description here

第三件事-

  1. 在验证电话号码PhoneAuthProvider.provider(auth: Auth.auth())之前
@IBAction func phoneButton(sender: UIButton) {

    // ***step 5***
    PhoneAuthProvider.provider(auth: Auth.auth())

    PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumberTextField.text!, uiDelegate: nil) {
        (verificationID, error) in

        if let error = error {
            print(error.localizedDescription)
            return
        }

        guard let verificationId = verificationID else { return }

        // do something with verificationID
    }
}

答案 1 :(得分:0)

在应用程序委托的application(_:open:options:)方法中,调用Auth.auth().canHandle(url)

答案 2 :(得分:0)

在iOS上,必须在调用verifyPhoneNumber之前将appVerificationDisabledForTesting设置设置为TRUE。无需任何APNs令牌或在后台发送静默推送通知即可对其进行处理,从而使其更易于在模拟器中进行测试。这也会禁用reCAPTCHA后备流程。

Firebase Docs

答案 3 :(得分:0)

我遇到了这个问题并通过将此代码添加到我的 AppDelegate.m 中来修复它

template<class InputIt1, class InputIt2,
         class OutputIt, class Compare,
         class BinaryOp>
OutputIt set_union_transform(InputIt1 first1, InputIt1 last1,
                   InputIt2 first2, InputIt2 last2,
                   OutputIt d_first, Compare comp,
                   BinaryOp binary_op)
{
    for (; first1 != last1; ++d_first) {
        if (first2 == last2)
            return std::copy(first1, last1, d_first);
        if (comp(*first2, *first1)) {
            *d_first = *first2++;
        } else if (comp(*first1, *first2)) {
            *d_first = *first1++;
        } else {
            *d_first = binary_op(*first1++, *first2++);
        }
    }
    return std::copy(first2, last2, d_first);
}