2017-01-01 3 views
7

私はUdacityのチュートリアルの後にFirebase androidアプリケーションを開発しています。SetProvidersメソッドは非推奨となっています

setProvidersメソッドは、私が解決策を見つけることができなかったドキュメントを通過した後、IDEによって推奨されなくなりました。問題を解決する方法はありませんか?

mMessagesDatabaseReference.addChildEventListener(mChildEventListener); 
    mAuthStateListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null){ 
       Toast.makeText(MainActivity.this,"You are signed in, Welcome", Toast.LENGTH_SHORT).show(); 
      }else{ 
       startActivityForResult(
         AuthUI.getInstance() 
             .createSignInIntentBuilder() 
             .setIsSmartLockEnabled(false) 
             .setProviders(
               AuthUI.EMAIL_PROVIDER, 
               AuthUI.GOOGLE_PROVIDER 
               ) 
             .build(), 
             RC_SIGN_IN); 
      } 
     } 
    }; 

} 
+0

エラーログを共有できますか? –

+1

探しているドキュメントは次のとおりです:https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md#sign-in-examples – now

答えて

10

UPDATE:あなたは廃止setProviders()

使用例の代わりにsetAvailableProviders()を使用することができます。

startActivityForResult(
    AuthUI.getInstance() 
      .createSignInIntentBuilder() 
      .setAvailableProviders(Arrays.asList(
        new AuthUI.IdpConfig.EmailBuilder().build(), 
        new AuthUI.IdpConfig.GoogleBuilder().build(), 
        new AuthUI.IdpConfig.FacebookBuilder().build())) 
      .build(), 
    RC_SIGN_IN); 

出典:Firebase UI for Auth

ここ コードですより

@Alexey KSは、以下のソリューションは、動作しますが、廃止されました:

私も同じチュートリアルを以下とソリューションを探しここで終わっています。私は自分自身で解決策を見つけようとし、それを見つけました。 setProviders()の2つのオーバーロードされたメソッドがあります。 setProviders(String ... providers)のものは推奨されていません。私はsetProviders(リスト< IdpConfig> idpConfigs)を使用しました。以下はコードです

まず、IdpConfigのListインスタンスを作成します。ここで、FirebaseDatabaseのインスタンスを作成します。言い換えれば、すべてのメソッドの外で、あなたのクラスの中でこれを行います。

List<AuthUI.IdpConfig> providers; 

これはあなたののonCreate()での書き込み:

providers = new ArrayList<>(); 

次にこれであなたのコードを置き換える:

mMessagesDatabaseReference.addChildEventListener(mChildEventListener); 
mAuthStateListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null){ 
       Toast.makeText(MainActivity.this,"You are signed in, Welcome", Toast.LENGTH_SHORT).show(); 
      }else { 
       providers.add(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build()); 
       providers.add(new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build()); 
       startActivityForResult(
         AuthUI.getInstance() 
         .createSignInIntentBuilder() 
           .setIsSmartLockEnabled(false) 
           .setProviders(providers) 
         .build(), 
         RC_SIGN_IN); 
      } 
     } 
    }; 

設定が完了しています! 良い一日を過ごしてください:)

+0

AuthUI.IdpConfig.Builder()は非推奨です今も。 [here](https://github.com/firebase/FirebaseUI-Android/tree/master/auth#adding-providers)に示すような適切なビルダーでsetAvailableProviders()メソッドを使用する必要があります。 –

0

エミュレータとビルドAPIのレベルが同じで、より高いAPIレベルでエミュレートしていないことを確認してください。 Googleの再生サービスのエラーは、私からこれから出てきました。

これはbuild.gradleファイルで確認してください。

次の例では、ただ、それが動作する "setAvailableProviders" と "setProvider" を置き換えるAPIレベル24

android { 
compileSdkVersion 24 
buildToolsVersion "24.0.1" 
...} 
5

代わりsetProviderssetAvailableProviders()を使用する必要があります次のようにsetProvidersの代わりに:

setAvailableProviders(
Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(), 
       new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build())) 
       .build() 
1

setProviders(
      AuthUI.EMAIL_PROVIDER, 
      AuthUI.GOOGLE_PROVIDER) 
      .build() 

新しいバージョンでFirebaseAuth 11.4.2使用setAailableProvidersの次のリンクでFirebaseUIの例に示すように