Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Failed to authorize: Null intent received" when using deeplink to bring app in front under android #493

Open
hschaeufler opened this issue Apr 30, 2024 · 6 comments

Comments

@hschaeufler
Copy link

Hello everyone, Hello MaikuB,
I have a multi-step authentication process in the course of which the user does something in another app. To do this, I first call authoriseAndExchangeCode. During the authentication process, another app is called from the custom Android tab or the ASAuthenticationSession. To bring the custom app back into the foreground after the activities in the other app, I have defined another Android app link/deeplink/intent filter in the main activity. This deeplink is then called from the other app. After the return, the Android custom tab or the ASAuthentificationSession should still be visible. The problem is that under android the authentication is cancelled after the return and authorizeAndExchangeCode throws a PlatformException(null_intent, Failed to authorize: Null intent received, null, null). However, this flow works on iOS.

The following is an excerpt from the AndroidManifest.xml

        <activity
            android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:exported="true"
            android:hardwareAccelerated="true"
            android:launchMode="singleInstance"
            android:showWhenLocked="false"
            android:theme="@style/LaunchTheme"
            android:turnScreenOn="true"
            android:windowSoftInputMode="adjustResize">
...
        <!-- This activity is used for jump back-->
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" />
                <data android:host="my-host.tld"/>
                <data android:path="/launch-my-app"/>
            </intent-filter>
        </activity>
        <!-- This activity is later used for auth with AppAuth-->
        <activity
            android:name="net.openid.appauth.RedirectUriReceiverActivity"
            android:exported="true"
            tools:node="replace">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" />
                <data android:host="my-other-host.tld"/>
                <data android:path="/auth"/>
            </intent-filter>
        </activity> 

The error seems to be due to the fact that onActivityResult(int requestCode, int resultCode, Intent intent) is called although the authentication has not yet been completed.

Does anyone have an idea what I can do or how I can fix this?

@SatriyoJati
Copy link

i got same issue. I set on file build.gradle and AndroidManifest.xml.

@vukovicluka
Copy link

vukovicluka commented Aug 23, 2024

this solved my issue #503 (comment)

@hschaeufler
Copy link
Author

this solved my issued #503 (comment)

My AndroidManifest.xml unfortunately doesn't have a android:taskAffinity="" Attribute.

@Painwraith
Copy link

I am having the same issue

@loukman-sh
Copy link

I have no experience in native Android development so I don't know exactly how this works but I added an intent-filter inside my main activity :

<intent-filter android:autoVerify="true">
    <action android:name="HANDLE_AUTHORIZATION_RESPONSE" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Can't find the source but it fixed the error for me.

@hschaeufler
Copy link
Author

hschaeufler commented Oct 3, 2024

I have no experience in native Android development so I don't know exactly how this works but I added an intent-filter inside my main activity :

<intent-filter android:autoVerify="true">
    <action android:name="HANDLE_AUTHORIZATION_RESPONSE" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Can't find the source but it fixed the error for me

Thanks for the tip, I'll give it a try. How did you come up with this? What does your Android manifest look like overall? Did you add this in addition to the activity for the app link to return or the AppAuth activity or instead of one of the two?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants