Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xamarin.Auth Google Presenter not closing in Android Xamarin.Forms App

I am using Xamarin.Form to write a Android app. I have successfully implemented the OAuth and I can sign in and get the user information using OAuth2Authenticator.

When the user clicks signup/Login I show the OAuthLoginPresenter as follows:

var oAuthLoginPresenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
oAuthLoginPresenter.Login(App.OAuth2Authenticator);

This works great and the user sees the login page.

When the user clicks Allow the completed Event on the OAuth2Authenticator instance fires as expected and the user is once again back looking at the app.

However this is where my problem is - I get a notification:

If CustomTabs Login Screen does not close automatically close CustomTabs by Navigating back to the app.

Thing is though I am back at the app. If I look at all my open apps I can see the login screen is still running in the back ground so that presenter has not closed.

In my intercept Activity which gets the redirect looks like this:

[Activity(Label = "GoogleAuthInterceptor")]
[IntentFilter
(
    actions: new[] { Intent.ActionView },
    Categories = new[]
    {
            Intent.CategoryDefault,
            Intent.CategoryBrowsable
    },
    DataSchemes = new[]
    {
        // First part of the redirect url (Package name)
        "com.myapp.platform"
    },
    DataPaths = new[]
    {
        // Second part of the redirect url (Path)
        "/oauth2redirect"
    }
)]

public class GoogleAuthInterceptor: Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your application here
        Android.Net.Uri uri_android = Intent.Data;

        // Convert Android Url to C#/netxf/BCL System.Uri
        Uri uri_netfx = new Uri(uri_android.ToString());

        // Send the URI to the Authenticator for continuation
        App.OAuth2Authenticator?.OnPageLoading(uri_netfx);

        Finish();
    }
}

Am I missing a step in here to close that presenter? Any other ideas please?

UPDATE:

I have now found that using Chrome as the default browser works fine and presenter is closed. But if I use a Samsung browser as my default browser - it does not close.

So I need a way to close it manually.

like image 639
TResponse Avatar asked Nov 19 '22 07:11

TResponse


1 Answers

Just set property to null when initializing Xamarin.Auth in your main activity:

//don't show warning message when closing account selection page
CustomTabsConfiguration.CustomTabsClosingMessage = null;
like image 161
antferr Avatar answered Jun 16 '23 21:06

antferr