Сергей
Сергей

Reputation: 898

OAuth2Authenticator - Object reference not set to an instance of an object

I have a very simple code in the ViewModel

private void _yOauth() 
{
    var auth = new OAuth2Authenticator
    (
        clientId: clientId,
        scope: scope,
        authorizeUrl: new Uri(oauthUrl),
        redirectUrl: new Uri(redirectUrl),
        clientSecret: clientSecret,
        accessTokenUrl: new Uri(accessTokenUrl)
    );

    auth.Completed += AuthOnCompleted;
    auth.Error += AuthOnError;

    var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
    presenter.Login(auth);
}

This code is crashing with exception on presenter.Login(auth);

Object reference not set to an instance of an object.

введите сюда описание изображения

Moreover presenter and auth aren't null.

Stack Trace :

at Xamarin.Auth.Presenters.OAuthLoginPresenter.Login (Xamarin.Auth.Authenticator authenticator) [0x00012] in <3887a0d7d292416b83829cf88b593985>:0 
  at Test.ViewModels.MainPageViewModel._yOauth () [0x00078] in D:\\Test\Mobile\Test\ViewModels\MainPageViewModel.cs:107 
  at Test.ViewModels.MainPageViewModel.<.ctor>b__7_0 () [0x00001] in D:\MyUtilits\Test\Mobile\Test\ViewModels\MainPageViewModel.cs:29 
  at Xamarin.Forms.Command+<>c__DisplayClass4_0.<.ctor>b__0 (System.Object o) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Command.cs:74 
  at Xamarin.Forms.Command.Execute (System.Object parameter) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Command.cs:112 
  at Xamarin.Forms.ButtonElement.ElementClicked (Xamarin.Forms.VisualElement visualElement, Xamarin.Forms.Internals.IButtonElement ButtonElementManager) [0x00008] in D:\a\1\s\Xamarin.Forms.Core\ButtonElement.cs:60 
  at Xamarin.Forms.Button.SendClicked () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Button.cs:173 
  at Xamarin.Forms.Platform.Android.ButtonElementManager.OnClick (Xamarin.Forms.VisualElement element, Xamarin.Forms.IButtonController buttonController, Android.Views.View v) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\ButtonElementManager.cs:25 
  at Xamarin.Forms.Platform.Android.FastRenderers.ButtonRenderer.Android.Views.View.IOnClickListener.OnClick (Android.Views.View v) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\FastRenderers\ButtonRenderer.cs:72 
  at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00010] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-29/mcw/Android.Views.View.cs:2230 
  at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.43(intptr,intptr,intptr)

Upvotes: 2

Views: 523

Answers (1)

deczaloth
deczaloth

Reputation: 7485

I had a similar issue, and all i had to do is add this line in Android Project

global::Xamarin.Auth.Presenters.XamarinAndroid.AuthenticationConfiguration.Init(this, savedInstanceState);

so that it looks like this:

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

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            global::Xamarin.Auth.Presenters.XamarinAndroid.AuthenticationConfiguration.Init(this, savedInstanceState);

            LoadApplication(new App());
        }
...

Not sure, but for iOS and other platforms you might require something similar. Please refer to https://github.com/moljac/Xamarin.Auth.Samples.NugetReferences/ for some samples...

Upvotes: 1

Related Questions