我一直在尝试实施Firebase文档中有关如何通过Firebase上的Facebook验证用户的逻辑。但我看起来更专注于native android
而不是Xamarin。任何人都可以用材料帮助我吗?我在网上和论坛上搜索过一个样本。
答案 0 :(得分:7)
有人可以用材料帮我吗?我已经在网上和论坛上搜索了一些样本。
我没有找到Xamarin.Android的官方教程,但我认为你仍然可以按照Facebook Login for Android和Authenticate 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" />