Ios SwiftUI-与Microsoft的Firebase身份验证

Ios SwiftUI-与Microsoft的Firebase身份验证,ios,firebase,firebase-authentication,swiftui,Ios,Firebase,Firebase Authentication,Swiftui,目前,我正在尝试使用SwiftUI构建一个应用程序,并与Microsoft一起使用Firebase身份验证。我想做的是通过Microsoft帐户登录,并通过令牌获取一些信息。在过去,我用这种方式成功地完成了这项工作:但我在SwiftUI中失败了 下面是我的实现方式,应用程序确实打开了Microsoft登录页面,似乎登录成功,但它在空白页面停止,并且原始视图没有显示 导入快捷界面 进口火基 结构符号视图:视图{ var microsoftProvider:OAuthProvider? init()

目前,我正在尝试使用SwiftUI构建一个应用程序,并与Microsoft一起使用Firebase身份验证。我想做的是通过Microsoft帐户登录,并通过令牌获取一些信息。在过去,我用这种方式成功地完成了这项工作:但我在SwiftUI中失败了

下面是我的实现方式,应用程序确实打开了Microsoft登录页面,似乎登录成功,但它在空白页面停止,并且原始视图没有显示

导入快捷界面
进口火基
结构符号视图:视图{
var microsoftProvider:OAuthProvider?
init(){
self.microsoftProvider=OAuthProvider(providerID:“microsoft.com”)
}
函数签名(){
self.microsoftProvider?.getCredentialWith(u513;:nil){credential,出现错误
如果错误!=nil{
//处理错误。
}
如果让凭证=凭证{
Auth.Auth().signIn(带:凭证){(authResult,error)in
如果错误!=nil{
//处理错误。
}
guard let authResult=authResult else{
打印(“无法获取图形authResult”)
返回
}
打印(authResult.user)
//成功登录时获取凭据和令牌
让microcedential=authResult.credential作为!OAuthCredential
让token=microEdential.accessToken!
//使用令牌调用Microsoft Graph API
// ...
}
}
}
}
var body:一些观点{
VStack{
按钮(操作:登录){
文本(“签名”)
}
}
}
}
结构符号视图预览:预览提供程序{
静态var预览:一些视图{
SignInView()
}
}

咨询Firebase支持团队后,问题已经解决

团队非常周到,乐于助人。我们检查了所有的设置并缩小了一些范围。最后,团队的解决方案附在此处:

除了官方文件中描述的所有步骤外,还需要确保安装了Firebase 6.13.0版和Auth SDK v6.4.0版

然后,在SceneDelegate.swift中实现以下功能,可以在身份验证流程中处理重定向URL。登录流已成功完成,并且可以接收令牌

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  for urlContext in URLContexts {
      let url = urlContext.url
      Auth.auth().canHandle(url)
  }
}
func场景(scene:UIScene,openURLContexts:Set){
对于URLContexts中的urlContext{
让url=urlContext.url
Auth.Auth().canHandle(url)
}
}

咨询Firebase支持团队后,问题已经解决

团队非常周到,乐于助人。我们检查了所有的设置并缩小了一些范围。最后,团队的解决方案附在此处:

除了官方文件中描述的所有步骤外,还需要确保安装了Firebase 6.13.0版和Auth SDK v6.4.0版

然后,在SceneDelegate.swift中实现以下功能,可以在身份验证流程中处理重定向URL。登录流已成功完成,并且可以接收令牌

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  for urlContext in URLContexts {
      let url = urlContext.url
      Auth.auth().canHandle(url)
  }
}
func场景(scene:UIScene,openURLContexts:Set){
对于URLContexts中的urlContext{
让url=urlContext.url
Auth.Auth().canHandle(url)
}
}