C# Firebase Facebook与Xamarin Android的身份验证

C# Firebase Facebook与Xamarin Android的身份验证,c#,android,firebase,xamarin,firebase-authentication,C#,Android,Firebase,Xamarin,Firebase Authentication,我一直在尝试实现Firebase文档中关于如何通过Firebase上的Facebook对用户进行身份验证的逻辑。但我觉得它更关注的是原生android,而不是Xamarin。有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本 有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本 我没有找到Xamarin.Android的官方教程,但我认为你仍然可以在Xamarin.Android中学习并补充它,基本上它们都很像 首先,为Xamarin安装Firebase SDK,并与 然后按照上述教程中的过程

我一直在尝试实现Firebase文档中关于如何通过Firebase上的Facebook对用户进行身份验证的逻辑。但我觉得它更关注的是原生android,而不是Xamarin。有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本

有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本

我没有找到Xamarin.Android的官方教程,但我认为你仍然可以在Xamarin.Android中学习并补充它,基本上它们都很像

首先,为Xamarin安装Firebase SDK,并与

然后按照上述教程中的过程操作

这是我的演示:

[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);
    }
}
[活动(Label=“LoginActivity”,Exported=true)]
[IntentFilter(新[]{Intent.ActionView},
DataScheme=“@string/fb\u login\u protocol\u scheme”),]
公共类LoginActivity:Activity、IFacebookCallback、IOnCompleteListener
{
专用ICallbackManager mCallbackManager;
私人消防队;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
FacebookSdk.sdkinInitialize(this.ApplicationContext);
//在此处创建应用程序
SetContentView(Resource.Layout.loginlayout);
FirebaseApp.InitializeApp(本);
mAuth=FirebaseAuth.Instance;
LoginButton fblogin=FindViewById(Resource.Id.fblogin);
fblogin.SetReadPermissions(“电子邮件”、“公共档案”);
mCallbackManager=CallbackManagerFactory.Create();
RegisterCallback(mCallbackManager,this);
}
私有无效handleFacebookAccessToken(AccessToken AccessToken)
{
AuthCredential credential=FacebookAuthProvider.GetCredential(accessToken.Token);
mAuth.SignInWithCredential(credential).AddOnCompleteListener(this,this);
}
//FacebookCallback实现
成功时的公共void(Java.Lang.Object p0)
{
LoginResult LoginResult=p0作为LoginResult;
handleFacebookAccessToken(loginResult.AccessToken);
}
公开作废
{
}
公共无效OnError(FacebookException p0)
{
}
//firebase IOnCompleteListener实现
未完成的公共void(任务)
{
如果(任务成功)
{
FirebaseUser=mAuth.CurrentUser;
}
其他的
{
Toast.MakeText(这是“身份验证失败”,ToastLength.Short).Show();
}
}
//活动生命周期
受保护的覆盖void OnStart()
{
base.OnStart();
FirebaseUser currentUser=mAuth.currentUser;
}
受保护的覆盖void OnActivityResult(int请求代码、[GeneratedEnum]结果代码、意图数据)
{
base.OnActivityResult(请求代码、结果代码、数据);
var ResultCondenum=0;
开关(结果代码)
{
案例结果。确定:
结果密度=-1;
打破
案例结果。已取消:
结果密度=0;
打破
case Result.FirstUser:
结果密度=1;
打破
}
OnActivityResult(请求代码、结果密度、数据);
}
}
布局:

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

@MartinDeSimone,谢谢,但这与Firebase无关,我不使用表单。此外,我已经能够通过facebook实现登录。我只想将Firebase Auth添加到我的应用程序中,以便查看已登录的用户