2016-11-14 20 views
5

Có thể sử dụng bố cục riêng của mình & nút cho giao diện người dùng Firebase trên Android?Giao diện người dùng Firebase - Xác thực - Sử dụng bố cục riêng

tôi về cơ bản muốn thực hiện màn hình cho việc lựa chọn các nhà cung cấp danh tính (google, facebook, vv) trên của riêng tôi và bắt đầu dòng chảy theo từ nghe nhấp chuột của tôi (ví dụ sử dụng 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 
} 

tôi biết firebase cung cấp khả năng tùy chỉnh màn hình/chủ đề, nhưng nó không đủ cho trường hợp của tôi.

Trong trường hợp xấu nhất, tôi sẽ phải triển khai điều này bằng phương pháp sdk Firebase chuẩn.

+0

bạn có thể sử dụng giao diện người dùng căn cứ hỏa lực riêng với tùy biến và chảy từ liên kết này: https://github.com/ firebase/FirebaseUI-Android/cây/chủ/auth –

Trả lời

2

Có, bạn có thể sử dụng bố cục của riêng mình & nút cho Xác thực giao diện người dùng Firebase trên Android.

Đối với Google và Facebook, Bạn có thể sử dụng các vật dụng được cung cấp trong tập tin XML như:

 <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"/> 

Sau đó, bạn có thể sử dụng của bạn "android: id" để thực hiện hành động trên onClick

Hy vọng câu hỏi của bạn được trả lời .

EDIT: Đối với dòng chảy google:

// 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

Xin chào, cảm ơn vì phản hồi, nhưng tôi biết cách sử dụng các nút, danh sách nhấp chuột, v.v. trong android, câu hỏi là nhiều hơn những gì để bắt đầu trong phương thức onclick để bắt đầu luồng firebase? Tôi đã cập nhật câu hỏi để làm rõ – JDC

+1

Cập nhật câu trả lời –

+1

Điều này đang làm điều đó bằng SDK tiêu chuẩn Firebase chuẩn? Sau đó, tôi sẽ phải thực hiện toàn bộ các công cụ smartlock vv của riêng tôi, đúng không? – JDC

7

Đối với bây giờ tất cả chúng ta có thể làm là chấp nhận bố trí của họ trên FirebaseUI như đã nêu here. Nếu chúng tôi không thích chúng tôi phải đăng nhập riêng. Tôi thực sự hy vọng họ cung cấp một số tùy chỉnh trong tương lai.

Trong ứng dụng của tôi, tôi có logo riêng biệt và nền riêng biệt, vì vậy khi bạn cố gắng đăng ký bằng email, biểu trưng biến mất và hộp thoại đăng ký không can thiệp vào biểu tượng, như here Bạn có thể làm điều đó .SetTheme và .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); 

Trong styles.xml chỉnh sửa windowBackground cho FirebaseLoginTheme của bạn:

<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> 
Các vấn đề liên quan