2016-11-14 47 views
5

是否有可能在的Android用我自己的佈局&按鈕的火力地堡UI驗證?火力地堡UI - 驗證 - 使用自己的佈局

我基本上要實現在屏幕上我自己選擇的身份提供商(谷歌,Facebook等),並從我的點擊收聽開始根據流量(例如,使用Butterknife):

@OnClick(R.id.login_btn_signInGoogle) 
public void signInGoogle(View view) { 
    // Start google sign in flow <--- This is what I do not know how to do it 
} 

@OnClick(R.id.login_btn_signInFacebook) 
public void signInFacebook(View view) { 
    // Start facebook sign in flow <--- This is what I do not know how to do it 
} 

我知道firebase提供了自定義屏幕/主題的可能性,但對我的情況來說還不夠。

在最糟糕的情況下,我將不得不使用標準的firebase sdk方法來實現這一點。

+0

您可以使用火力地堡自己的UI定製與從該鏈路流向:https://github.com/火力/ FirebaseUI-的Android /樹/主/ auth –

回答

2

是的,您可以在Android上使用自己的佈局&按鈕進行Firebase UI驗證。

對於谷歌和Facebook,您可以使用XML文件中提供類似的小部件:

 <com.google.android.gms.common.SignInButton 
      android:id="@+id/btn_google_login" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dip" 
      android:background="@color/colorAccent" 
      android:text="@string/btn_google_login" 
      android:textColor="@android:color/black" /> 

     <com.facebook.login.widget.LoginButton 
      android:id="@+id/btn_facebook_login" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dip" 
      android:background="@color/colorAccent" 
      android:text="@string/btn_facebook_login" 
      android:textColor="@android:color/black"/> 

然後你可以使用你的「機器人:ID」上的onClick

執行行動希望你問題的答案。

編輯: 對於谷歌流量:

// Configure sign-in to request the user's ID, email address, and basic 
     // profile. ID and basic profile are included in DEFAULT_SIGN_IN. 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(Your web_client_id) 
       .requestEmail() 
       .build(); 

    btn_google_login = (SignInButton) findViewById(R.id.btn_google_login); 

    btn_google_login.setSize(SignInButton.SIZE_STANDARD); 
    btn_google_login.setScopes(gso.getScopeArray()); 

    btn_google_login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      //If you want everytime for user to ask the account to select. 
      mGoogleApiClient.clearDefaultAccountAndReconnect(); 

      Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
      startActivityForResult(signInIntent,RC_SIGN_IN); 
     } 
    }); 
+1

您好,感謝您的迴應,但我知道如何在android中使用按鈕,clicklisteners等,問題更多的是從onclick方法開始啓動firebase流程的開始?我更新了問題以進行澄清 – JDC

+1

更新了答案 –

+1

這是使用標準的Firebase SDK進行的嗎?那麼我必須自己實施整個智能鎖等等,對嗎? – JDC

7

現在我們所能做的就是接受他們對FirebaseUI佈局陳述here。如果我們不喜歡我們必須自己登錄。 我真的希望他們在未來提供一些定製。

在我的應用我有一個單獨的標誌和一個單獨的背景,所以當你試圖用郵箱註冊,標誌消失,並註冊對話框不與標識干擾,像here 你可以做到這一點.SetTheme和.SetLogo

startActivityForResult(
         AuthUI.getInstance() 
           .createSignInIntentBuilder() 
           .setTheme(R.style.FirebaseLoginTheme) 
           .setLogo(R.drawable.logo) 
           .setProviders(Arrays.asList(
             new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build(), 
             new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(), 
             new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build())) 
           .setIsSmartLockEnabled(false) 
           .build(), 
         RC_SIGN_IN); 

在styles.xml編輯windowBackground您FirebaseLoginTheme:

<style name="FirebaseLoginTheme" parent="FirebaseUI"> 
    <item name="windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowBackground">@drawable/login</item> 
</style>