2016-10-21 2 views
1

Firebase와 iOS를 처음 접했고 누군가가 여러 oAuth 제공자를 연결하는 방법을 알고 있는지 궁금합니다. 나는 중포 기지 문서를 따라이 기능을 구현하기 위해 노력 : 위의 debugPrint("APP: \(error)")에도 불구하고 호출되지 도착 결코 FIRAuth.auth()?.currentUser?.link 함수가 호출되고Firebase iOS에 oAuth 제공자 연결하기

func firebaseSignInWithLink(credential: FIRAuthCredential) { 

     FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in 
      if error != nil { 
       debugPrint("APP: there has been an error signing into firebase, perhaps another account with same email") 
       debugPrint("APP: \(error)") 

       // if existing email, try linking 
       FIRAuth.auth()?.currentUser?.link(with: credential, completion: { (user, error) in 
        if error != nil { 
         debugPrint("APP: there has been an error signing into firebase") 
         debugPrint("APP: \(error)") 
        } 
        else { 
         debugPrint("APP: successfully signed into firebase") 
        } 
       }) 
      } 
      else { 
       debugPrint("APP: successfully signed into firebase") 
      } 
     }) 
    } 

합니다. ". 이메일 주소가 다른 계정에서 이미 사용중인 \"는

옵션 (오류 도메인 = FIRAuthErrorDomain 코드 \ = 17007은 사용자 정보가 = {NSLocalizedDescription이를 = :이 작동하지 않기 때문에, 나는 아래의 오류가 계속 이메일 주소는 다른 계정에서 이미 사용하고, ERROR_NAME = ERROR_EMAIL_ALREADY_IN_USE, [email protected]이}) "

이 어떤 도움을 크게 감상 할 수 주셔서 감사합니다 :.! D

+0

나는 동일한 문제를 해결하기 위해 노력하고 있습니다. 나는 아직 마스터하지 못했지만 이미 "currentUser"(당신이하는 것으로 확신 함)가 있다면, 사용자 이메일이 이미 이전 로그인의 다른 IDP와 연관되어 있기 때문에 로그인해서는 안됩니다. .. 우리가 보는 오류를 ... – Dewey

+0

나는 혼란스러워하는 일은 사용자가 오류를 생성 한 oAuth를 통해 로그인 할 수없는 경우 currentUser 객체를 얻을 수있는 방법이라고 생각합니다. 사용자가 성공적으로 로그인하여 현재 사용자 개체를 가져올 때까지 가능한 모든 인증 방법을 시도해야합니까? 그런 다음 다시 연결하기 위해 oAuth에 로그인해야합니까? :/ – Clement

답변

2

나는 당신이 생각 firebase 문서에서

0을 읽습니다.

기존 사용자 계정에 인증 업체 자격 증명을 연결하려면 :

  1. 로그인을 어떤 인증 공급자 또는 방법을 사용하여 사용자에.
  2. FIRAuth.signInWith 메서드 중 하나를 호출 할 때까지 포함하여 새 인증 공급자 의 로그인 흐름을 완료합니다. 예를 들어 사용자의 Google ID 토큰, Facebook 액세스 토큰 또는 전자 메일 및 암호를 가져옵니다.

  3. 는 새 인증 공급자

그래서 당신은 방법 FIRAuth.signInWith를 호출하지 않아야 대한 FIRAuthCredential를 가져옵니다. 또한 기존 계정에 대한 링크를 만들고 싶다는 점을 지적해야합니다. 먼저 로그인 한 다음 링크 할 수 있어야합니다. 이것이 현재 사용자가 있어야하는 이유입니다.

0

firebase 콘솔에서 "이메일 주소 설정 firebase 설정 당 여러 계정"을 선택 해제했기 때문에 발생했습니다.

+0

이렇게하면 인증에 새 UID가 설정됩니다 ... 여러 공급자가있는 계정 하나가 아닌 여러 계정이 존재하게됩니다. 여러 공급자의 단일 사용자에 대해 고유 한 UID를 사용하여 지속성이 필요한 경우 문제가 발생할 수 있습니다. – MattTanner