SwiftUI - 与 Microsoft 的 Firebase 身份验证
Posted
技术标签:
【中文标题】SwiftUI - 与 Microsoft 的 Firebase 身份验证【英文标题】:SwiftUI - Firebase Authentication with Microsoft 【发布时间】:2019-11-21 05:41:04 【问题描述】:目前我正在尝试使用 SwiftUI 构建应用程序并使用 Firebase 身份验证与 Microsoft。我想要做的是通过微软帐户登录并通过令牌获取一些信息。过去,我是通过这种方式成功完成的:Link,但在 SwiftUI 中却失败了。
以下是我实现的方式,该应用确实打开了 Microsoft 登录页面,并且似乎登录成功,但它在空白页面处停止,并且没有显示原始视图。
import SwiftUI
import Firebase
struct SignInView: View
var microsoftProvider : OAuthProvider?
init()
self.microsoftProvider = OAuthProvider(providerID: "microsoft.com")
func signIn ()
self.microsoftProvider?.getCredentialWith(_: nil)credential, error in
if error != nil
// Handle error.
if let credential = credential
Auth.auth().signIn(with: credential) (authResult, error) in
if error != nil
// Handle error.
guard let authResult = authResult else
print("Couldn't get graph authResult")
return
print(authResult.user)
// get credential and token when login successfully
let microCredential = authResult.credential as! OAuthCredential
let token = microCredential.accessToken!
// use token to call Microsoft Graph API
// ...
var body: some View
VStack
Button(action: signIn)
Text("SignIn")
struct SignInView_Previews: PreviewProvider
static var previews: some View
SignInView()
【问题讨论】:
【参考方案1】:与 Firebase 支持团队协商后,问题已解决。
团队非常周到且乐于助人。我们完成了所有设置确认并缩小了一些范围。最后附上团队的解决方案:Phone Number Authentication
除了官方文档中描述的所有步骤外,还需要确保已经安装了Firebase 6.13.0和Auth SDK v6.4.0。
然后,在 SceneDelegate.swift 中实现下面的函数,就可以在 Authentication 流程中处理重定向 URL。登录流程成功完成,可以收到令牌。
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>)
for urlContext in URLContexts
let url = urlContext.url
Auth.auth().canHandle(url)
【讨论】:
以上是关于SwiftUI - 与 Microsoft 的 Firebase 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
[SwiftUI]:ForEach 不适用于字典数组、带数组的字典