2017-06-18 19 views
0

FirebaseのFacebookを使用してユーザーを認証する方法については、Firebaseのドキュメントにあるロジックを実装しようとしています。でも、Xamarinではなく、native androidに集中しているようです。誰かが材料で私を助けてくれますか?私は完全にオンラインとフォーラムでサンプルを検索しました。XamarinのAndroidベースのFirebase Facebook認証

+0

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

+0

@MartinDeSimone、ありがとう、それはFirebaseとは関係がなく、私はフォームを使用していない。また、私はfacebookを通してログインを実装することができました。私は自分のアプリにFirebase Authを追加して、ログインしているユーザーを見ることができます – XamarinDevil

答えて

2

誰でも教えてもらえますか?私は完全にオンラインとフォーラムでサンプルを検索しました。

私はXamarin.Androidのための公式のチュートリアルを見つけることができませんでしたが、私はあなたがまだ基本的に、彼らはかなり似ている、Xamarin.Androidでそれを補完するためにFacebook Login for AndroidAuthenticate Using Facebook Login on Androidをたどることができると思います。

まず、Xamarin用のFirebase SDKを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" /> 
関連する問題