Я создаю в 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");
}
}
}