2017-06-18 52 views
0

我一直在嘗試實施Firebase文檔中的邏輯,以瞭解如何通過Firebase上的Facebook對用戶進行身份驗證。但我看起來更關注於native android而不是Xamarin。任何人都可以幫我解決材料問題嗎?我已經通過在線和論壇搜索了一個樣本。使用Xamarin的Firebase Facebook身份驗證Android

+0

https://stackoverflow.com/questions/24105390/how-to-login -to-facebook-in-xamarin-forms –

+0

@MartinDeSimone,謝謝,但它與Firebase無關,而且我沒有使用表單。此外,我已經能夠通過Facebook實現登錄。我只想將Firebase身份驗證添加到我的應用程序,以便我可以看到已登錄的用戶 – XamarinDevil

回答

2

任何人都可以幫我一個材料嗎?我已經通過在線和論壇搜索了一個樣本。

我沒有找到Xamarin.Android官方教程,但我覺得你還是可以按照Facebook Login for AndroidAuthenticate Using Facebook Login on Android在Xamarin.Android加以補充,基本上他們非常喜歡。

首先,爲Xamarin安裝Firebase sdks,並與Xamarin.Facebook.Android一起安裝。

然後按照上述教程中的流程進行操作。

這裏是我的演示:

[Activity(Label = "LoginActivity", Exported = true)] 
[IntentFilter(new[] { Intent.ActionView }, 
DataScheme = "@string/fb_login_protocol_scheme"),] 
public class LoginActivity : Activity, IFacebookCallback, IOnCompleteListener 
{ 
    private ICallbackManager mCallbackManager; 
    private FirebaseAuth mAuth; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     FacebookSdk.SdkInitialize(this.ApplicationContext); 
     // Create your application here 
     SetContentView(Resource.Layout.loginlayout); 

     FirebaseApp.InitializeApp(this); 
     mAuth = FirebaseAuth.Instance; 

     LoginButton fblogin = FindViewById<LoginButton>(Resource.Id.fblogin); 
     fblogin.SetReadPermissions("email", "public_profile"); 

     mCallbackManager = CallbackManagerFactory.Create(); 
     fblogin.RegisterCallback(mCallbackManager, this); 
    } 

    private void handleFacebookAccessToken(AccessToken accessToken) 
    { 
     AuthCredential credential = FacebookAuthProvider.GetCredential(accessToken.Token); 
     mAuth.SignInWithCredential(credential).AddOnCompleteListener(this, this); 
    } 

    //facebook IFacebookCallback implementation 
    public void OnSuccess(Java.Lang.Object p0) 
    { 
     LoginResult loginResult = p0 as LoginResult; 
     handleFacebookAccessToken(loginResult.AccessToken); 
    } 

    public void OnCancel() 
    { 
    } 

    public void OnError(FacebookException p0) 
    { 
    } 

    //firebase IOnCompleteListener implementation 
    public void OnComplete(Task task) 
    { 
     if (task.IsSuccessful) 
     { 
      FirebaseUser user = mAuth.CurrentUser; 
     } 
     else 
     { 
      Toast.MakeText(this, "Authentication failed.", ToastLength.Short).Show(); 
     } 
    } 

    // acitivity lifecycle 
    protected override void OnStart() 
    { 
     base.OnStart(); 
     FirebaseUser currentUser = mAuth.CurrentUser; 
    } 

    protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 
     var resultCodeNum = 0; 
     switch (resultCode) 
     { 
      case Result.Ok: 
       resultCodeNum = -1; 
       break; 

      case Result.Canceled: 
       resultCodeNum = 0; 
       break; 

      case Result.FirstUser: 
       resultCodeNum = 1; 
       break; 
     } 
     mCallbackManager.OnActivityResult(requestCode, resultCodeNum, data); 
    } 
} 

佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <com.facebook.login.widget.LoginButton 
     android:id="@+id/fblogin" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" /> 
</LinearLayout> 

清單:

<uses-permission android:name="android.permission.INTERNET" /> 
<application android:label="AndroidFireBase"> 
    <meta-data android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_app_id" />