【问题标题】:Firebase Facebook Authentication with Xamarin Android使用 Xamarin Android 进行 Firebase Facebook 身份验证
【发布时间】:2017-11-20 19:47:53
【问题描述】:

我一直在尝试实现 Firebase 文档中关于如何在 Firebase 上通过 Facebook 对用户进行身份验证的逻辑。但我看起来更关注native android 而不是 Xamarin。谁能帮我出一个材料?我已经在网上和论坛上搜索了一个样本。

【问题讨论】:

  • @MartinDeSimone,谢谢你,但它与 Firebase 无关,我没有使用表单。此外,我已经能够通过 facebook 实现登录。我只想将 Firebase Auth 添加到我的应用中,这样我就可以看到已登录的用户

标签: c# android firebase xamarin firebase-authentication


【解决方案1】:

谁能帮我出一个材料?我已经在网上和论坛上搜索了一个样本。

我没有找到 Xamarin.Android 的官方教程,但我认为您仍然可以在 Xamarin.Android 中关注 Facebook Login for AndroidAuthenticate Using Facebook Login on 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" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2017-11-27
    • 2020-01-31
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多