Firebase Simple Login을 사용하고 있으며, 적절한 로그인을 허용하고, 잘못된 로그인을 거부하며, 조용히 로그 아웃 할 수 있습니다. 내가 씨름하고있는 것은 이것이다. 내 앱이 시작될 때, 나는 사용자가 아직 로그인되어 있는지를 알아야한다 (이것은 "나를 기억한다"를 선택했을 때 일어난다). 그렇다면, 나는 바로 따라갈 것이고, 그렇지 않으면 나는 로그인 화면을 제시한다.Firebase Check Method (iOS)
전체 Firebase에서 unauth
함수를 호출하고 check
메서드를 사용하려고하면 블록에 반환 된 오류는 NULL이고 사용자 전자 메일은 마지막으로 기록 된 것과 동일합니다 - 사용자. auth 객체에서 logout
메소드를 사용하는 경우에도 마찬가지입니다.
이 프로그램은 RubyMotion 앱이므로 REPL에서이 프로그램을 사용하여 진행 상황을 볼 수 있습니다.
업데이트 : 코드에 추가 중이므로 다른 사람이 어떤 일이 벌어지는 지 확인할 수 있습니다. 그것은 운동 - firebase에 특이한 것으로 밝혀졌습니다. 나는 그 문제를 해결할 것입니다. 한편, 여기에 내 코드가 뭔지 : 최대
코드는 일을 설정 :
def init_firebase
@fire_ref = Firebase.new('https://my-fine-firebase.firebaseio.com')
@auth = FirebaseSimpleLogin.new(@fire_ref)
end
def login(email, password, &block)
status = MotionMap::Map.new({error: 'success', user: nil})
@auth.login(email: email, password: password) { |error, user|
status.user = user
if error.nil?
if user.nil?
status.error = "no error but user is nil"
end
block.call(status)
else
status.error = error.localizedDescription
block.call(status)
end
}
end
그래서 내 로그인 방법은 중포 기지의 콜백 및 완료에 응답 전화, 그것은 차례로 내 루비의 폐쇄를 실행 암호. 이것은 모두 작동합니다. MotionMap
항목은 무관심한 액세스로 해시를 가져 오는 좋은 방법입니다. 이제
의 REPL에서 나는이 작업을 수행 할 수 있습니다 내가 한
(main)> error = nil
(main)> f.unauth{|e| error = e}
(main)> p error
nil
(main)> error = user = nil;
(main)> a.check{|e, u| error = e; user = u}
(main)> p error
=> nil
(main)> puts user.email
=> 'my_real_email_address'
그래서 첫 번째 일이 바로이 특정 중포 기지의 참조를 unauthorize했다? 그리고 나서, 나는 계속 나아 갔고 수표를 냈다. 오류는 nil (Objective-C에서는 NULL)이지만 사용자 정보는 손상되지 않았습니다. 즉, 내 사용자가 무단이라는 것을 알 수 없습니다.
업데이트 : Firebase 객체에서 unauth
을 호출하면 check
이 로그인 상태를 보는 방식에 영향을 미치지 않는 것으로 보입니다. motion-firebase의 logout 메소드에 대한 간단한 수정을했는데 auth 객체의 logout
메소드를 호출하면 해당 객체의 정보가 실제로 지워지고 Firebase 객체의 unauth
이 호출 된 것처럼 보입니다. 이것은 무슨 일이 일어나고 있는지 보면서 내 공감입니다.
((void)checkAuthStatusWithBlock:(void (^) (NSError *error , FAUser *user))block
에 매핑되는) check
을 호출하면 완료되면 비동기 적으로 실행되고 nil
오류 및 완전히 비어있는 사용자로 블록이 호출된다는 점에 유의해야합니다.
nil
오류가 예상되는 동작입니까?