身份验证成功后如何以编程方式继续?

How to programmatically segue after successful authentication?

我正在使用 Digits 框架制作一个应用程序,供用户使用他们的 phone 号码登录。话虽如此,我试图通过创建嵌入 UINavigationController ( 到我的情节提要中的 ViewController) 并添加一个按钮,该按钮会进入我的下一个 View。我意识到这不是在 成功验证 之后进行 segue 的方法。请看看我的代码,让我知道你在做什么 think/suggest:

func didTapButton(sender: AnyObject) {
    let digits = Digits.sharedInstance()
    let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask)
    configuration.phoneNumber = "+345555555555"
    digits.authenticateWithNavigationViewController(navigationController, configuration: configuration, 
            completionViewController:  completionViewController) 
}

我认为您的代码示例已从 Digits 文档 (https://docs.fabric.io/apple/digits/sign-in-with-phone-number.html#alternative-navigation-flows) 中的示例中提取出来。在我看来这一切都是正确的,我认为你在正确的轨道上。

Digits 让您可以使用电话号码创建帐户或登录应用。

这是导航控制器中的正确代码,当您 运行 代码时:

func didTapButton(sender: AnyObject) {
let digits = Digits.sharedInstance()
let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask)
configuration.phoneNumber = "+345555555555"
digits.authenticateWithNavigationViewController(navigationController, configuration:configuration, completionViewController:completionViewController)
}

这将在当前视图控制器的顶部弹出一个模式。用户将注册并验证或登录,当 Digits 对此进行验证后,它将弹出您的视图控制器 completionViewController.

关于问题,在UINavigationBar中添加一个按钮,并创建一个UIAction,当按下时调用didTapButton函数。然后这将触发您希望的身份验证。

如果您不想与 NavigationViewController 一起使用,请使用:

func didTapButton(sender: AnyObject) {
    let digits = Digits.sharedInstance()
    digits.authenticateWithCompletion { (session, error) in
        // Inspect session/error objects
    }
}

然后您必须自己处理在成功验证时弹出视图控制器。

您不能创建自己的表单来使用数字,它始终是一个弹出在顶部的模式,但是您可以将其格式化为您的应用程序。

configuration.phoneNumber = "+345555555555" 可能令人困惑。这只是一个可选的预填充数字形式的电话号码。数字会将 +34 识别为西班牙语,将 5555555555 识别为电话号码。如果您不希望删除代码行,或者您可以删除电话号码,只留下国家代码,数字将仅在表格中预填国家代码。

您还可以获取数字来请求用户的电子邮件地址。这是通过将 let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask) 更改为 let configuration = DGTAuthenticationConfiguration(accountFields: .Email)

来完成的

有关如何成功实施的完整示例,请参阅此页面:https://fabric.io/kits/ios/digits/features

希望对您有所帮助,如有任何其他问题,请随时提出:)

现在我更明白这个问题了,请试试这个:

import UIKit
import DigitsKit
class LoginViewController: UIViewController {

override func viewDidLoad() {
        let digitsButton = DGTAuthenticateButton(authenticationCompletion: { (session, error) in
             if (session != nil) {
                print("Your Digits User ID is " + session.userID)
                 let map = MapVC()
                self.presentViewController(map, animated: true, completion: nil)
             }
             else {
                print(error.localizedDescription)
            }
        })
        self.view.addSubview(digitsButton)
    }
}

或者可以使用:

import UIKit
import DigitsKit
class LoginViewController: UIViewController {

override func viewDidLoad() {
    let digitsButton = DGTAuthenticateButton(authenticationCompletion: { (session, error) in
        if (session != nil) {
            print("Your Digits User ID is " + session.userID)
            self.performSegueWithIdentifier("mapVC", sender: self)
        }
        else {
            print(error.localizedDescription)
        }
    })
    self.view.addSubview(digitsButton)
}
}

我希望这有效:)