Boursobank hangs on loading screen, apparently around Play Integrity after authent
- Dominant language
- Java
- Stars
- 14.6k
- Forks
- 3.2k
- PR merge metrics
- PR metrics pending
Description
**Describe the bug**
I cannot log in to the Boursobank app.
**To Reproduce**
1. Install Boursobank via Aurora Store.
2. Enter my ID.
3. Enter my password.
4. The app remains stuck on the loading screen indefinitely.
**Expected behavior**
I should be logged in and taken to my account.
**Screenshots**
**System**
Android version: 15
Custom ROM: LineageOS 22.2
Device: OnePlus 6T
microG Core version: 0.3.16.252432
microG Self-Check results: All ticked
Boursobank version: 7.74.1
**Additional context**
I also tried disabling microG as recommended [here](https://community.e.foundation/t/list-banking-apps-on-e-os/33091/481)
However, this does not work for me, because I don't get the option to "go to website" to log in.
One thing that caught my attention is that the app requests a Play Integrity token shortly after startup, and later calls requestAndShowDialog(). The app remains stuck on the loading screen afterwards.
There is also an nfc_manager exception in the log, although I don't know whether it is related to the issue.
Here is the relevant adb logcat --pid=12668 output. I've removed some irrelevant information from the log for readability and privacy.
```
08-25 19:33:06.849 I FirebaseCrashlytics: Initializing Firebase Crashlytics
08-25 19:33:06.874 I FirebaseInitProvider: FirebaseApp initialization successful
08-25 19:33:06.931 I flutter: [IMPORTANT:flutter/shell/common/shell.cc(527)] [Action Required]: Impeller opt-out deprecated.
08-25 19:33:06.931 I flutter: The application opted out of Impeller.
08-25 19:33:06.991 E GeneratedPluginRegistrant: Error registering plugin nfc_manager, dev.flutter.plugins.nfcmanager.NfcManagerPlugin
08-25 19:33:06.991 E GeneratedPluginRegistrant: java.lang.NullPointerException: Attempt to invoke virtual method
08-25 19:33:06.991 E GeneratedPluginRegistrant: 'java.util.Iterator android.content.IntentFilter.actionsIterator()'
08-25 19:33:06.991 E GeneratedPluginRegistrant: on a null object reference
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1936)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.app.ContextImpl.registerReceiver(ContextImpl.java:1872)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:784)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at qc.y.onAttachedToActivity(...)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(...)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1706)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.app.Activity.performStart(Activity.java:9122)
08-25 19:33:06.991 E GeneratedPluginRegistrant: at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4231)
08-25 19:33:07.021 I flutter: [start app in Environment{...}] with native mode release
08-25 19:33:07.834 I DynamiteModule: Considering local module com.google.android.gms.cronet_dynamite:0 and remote module com.google.android.gms.cronet_dynamite:2
08-25 19:33:07.834 I DynamiteModule: Selected remote version of com.google.android.gms.cronet_dynamite, version >= 2
08-25 19:33:08.377 I cr_CronetLibraryLoader: Cronet version: 102.0.5005.125, arch: aarch64
08-25 19:33:08.609 I PlayCore: IntegrityService: requestIntegrityToken(...)
08-25 19:33:08.625 I PlayCore: IntegrityService: ServiceConnectionImpl.onServiceConnected(...)
08-25 19:33:11.163 I PlayCore: OnRequestIntegrityTokenCallback: onRequestIntegrityToken
08-25 19:33:11.163 I PlayCore: IntegrityService: Unbind from service.
08-25 19:33:13.349 I flutter: Contentsquare Flutter SDK starting
08-25 19:33:13.365 W FA: User ID must be non-empty or null
08-25 19:33:16.969 I android.clients: Background concurrent copying GC freed memory
08-25 19:33:30.577 I PlayCore: IntegrityService: requestAndShowDialog(...)
08-25 19:34:21.600 I TRuntime.CctTransportBackend: Making request to Firebase logging service
08-25 19:34:23.963 I TRuntime.CctTransportBackend: Status Code: 200
08-25 19:34:29.244 D SessionLifecycleClient: Sending lifecycle 2 to service
08-25 19:34:29.244 D SessionLifecycleService: Activity backgrounding
```
Contributor guide
No contributing guide indexed for this repository
Research direction
No source file or test is named. Start by tracing the Play Integrity requestIntegrityToken and requestAndShowDialog calls referenced in the logcat, then compare their behavior with the login flow; done means identifying the cause of the indefinite loading screen and verifying that login completes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- authentication, mobile-dev, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100