0

私は Firebase Simple Login を使用しており、適切なログインを受け入れ、間違ったログインを拒否し、静かにログアウトさせてくれます (うまくいったかどうかはわかりません)。私が取り組んでいるのは次のとおりです。アプリの起動時に、ユーザーがまだログインしているかどうかを確認する必要があります (これは、ユーザーが "remember me" を選択した場合に発生します)。そうである場合はそのまま進み、そうでない場合はログイン画面を表示します。

私が観察しているunauthのは、Firebase 全体で関数を呼び出してからcheckメソッドを使用しようとすると、ブロックに返されるエラーは NULL であり、ユーザーの電子メールは最後にログインしたユーザーと同じままであるということです。logout認証オブジェクトでメソッドを使用すると、同じことが起こります。

これは RubyMotion アプリなので、REPL で遊んで、何が起こっているかを確認できます。

更新:コードを追加しているので、これに遭遇した他の人は何が起こっているのかを見ることができます. これは、motion-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

ログイン メソッドを呼び出すと、Firebase コールバックに応答し、完了すると、Ruby コードでクロージャーが実行されます。これはすべて機能します。スタッフは、無関心なアクセスでハッシュを取得するための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'

それで、私が最初にしたことは、この特定の Firebase 参照の承認を取り消すことでしたよね? そして、先に進んでチェックを行いました。エラーはゼロ (Objective-C では NULL) でしたが、ユーザー情報はそのままでした。つまり、自分のユーザーが無許可であったとは言えません。

更新: unauthFirebase オブジェクトを呼び出してもcheck、ログイン状態を確認する方法には影響しないようです。motion-firebase の logout メソッドで簡単な修正を行いましたがlogout、auth オブジェクトでメソッドを呼び出すと、実際にはそのオブジェクトの情報がクリアunauthされ、Firebase オブジェクトが呼び出されるようです。これは、何が起こっているかを見てからの私の推論です。

呼び出しcheck( にマップされる(void)checkAuthStatusWithBlock:(void ( ^ ) ( NSError *error , FAUser *user ))block) は非同期で実行され、完了時にブロックが呼び出され、nilエラーが発生し、ユーザーが完全に空になることに注意してください。

nilエラーは予期された動作ですか?

4

1 に答える 1