Xamarin Android логин google или facebook - PullRequest
0 голосов
/ 06 мая 2020

Я создаю в Xamarin. Формирует экран входа в систему для Facebook и Google. У меня 2 разных занятия. например, действие Google

вызывает

protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            GoogleSignInOptions gso3 = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
                .RequestProfile()
                .Build();

            GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
                .RequestIdToken(fireBaseCliendId)
                .Build();

            mGoogleApiClient = new GoogleApiClient.Builder(this)
                .AddConnectionCallbacks(this)
                .AddOnConnectionFailedListener(this)
                .AddApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .Build();

            Intent signInIntent = Auth.GoogleSignInApi.GetSignInIntent(mGoogleApiClient);
            StartActivityForResult(signInIntent, RC_SIGN_IN);
        }

, а также это

 private void HandleResult(GoogleSignInAccount result)
        {

            if (result != null)
            {
                Intent myIntent = new Intent(this, typeof(GoogleLoginActivity));
                myIntent.PutExtra("result", result);
                SetResult(Result.Ok, myIntent);
            }
            Finish();
        }

У меня также есть mainActivity, когда вход в facebook или Google успешно выполняется OnActivitResult позвонил Я попытался найти способ понять, какое действие / намерение возвращало ответ. этот код не работает. можете подсказать способ?

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            if (requestCode == FireBaseAuthAndroid.REQ_AUTH && resultCode == Result.Ok)
            {
                if (data is GoogleSignInAccount) // here is my issue
                {
                    GoogleSignInAccount sg = (GoogleSignInAccount)data.GetParcelableExtra("result");
                    MessagingCenter.Send(FireBaseAuthAndroid.KEY_AUTH, FireBaseAuthAndroid.KEY_AUTH, sg.IdToken);
                }
                else
                {
                    MessagingCenter.Send(FireBaseAuthAndroid.KEY_AUTH, FireBaseAuthAndroid.KEY_AUTH, "FacebookToken");
                }
            }
        }
...