C# Firebase Facebook与Xamarin Android的身份验证
我一直在尝试实现Firebase文档中关于如何通过Firebase上的Facebook对用户进行身份验证的逻辑。但我觉得它更关注的是原生android,而不是Xamarin。有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本 有人能帮我拿点材料吗?我在网上和论坛上搜索了一个样本 我没有找到Xamarin.Android的官方教程,但我认为你仍然可以在Xamarin.Android中学习并补充它,基本上它们都很像 首先,为Xamarin安装Firebase SDK,并与 然后按照上述教程中的过程操作 这是我的演示: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,并与 然后按照上述教程中的过程
[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添加到我的应用程序中,以便查看已登录的用户