xamarin / FacebookComponents

MIT License
88 stars 70 forks source link

Crash on Android 12 #236

Open uwe-neuronation opened 2 years ago

uwe-neuronation commented 2 years ago

Facebook login fail, if Android target API is set to 31 and device running Android 12

java.lang.IllegalArgumentException: air.nn.mobile.app.main: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. at android.app.PendingIntent.checkFlags(PendingIntent.java:375) at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645) at android.app.PendingIntent.getBroadcast(PendingIntent.java:632) at com.facebook.AccessTokenManager.setTokenExpirationBroadcastAlarm(AccessTokenManager.kt:121) at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:94) at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:47) at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:428) at com.facebook.AccessToken.setCurrentAccessToken(Unknown Source:2) at com.facebook.login.LoginManager.finishLogin(LoginManager.java:894) at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:247) at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:186) at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImp

I found that: https://stackoverflow.com/a/70763530/8880035

mos379 commented 2 years ago

This has been resolved with SDK 12.3.0 https://github.com/facebook/facebook-android-sdk/issues/997

when can this be updated here?

tentom commented 2 years ago

@Redth and @mattleibow I saw that you guys have released the latest Android versions of this library.

Could you please look into this issue, #224 and pull request #237

If the project is not maintained anymore that's fine but just let us know, so we know what to expect going forward.

Snegovikufa commented 2 years ago

I was able to trim from the library everything except the login functionality with keeping all of the old NuGet packages, you can find the source code here: https://github.com/Snegovikufa/FacebookComponents.

thisisthekap commented 1 year ago

I created a slim binding to reduce the effort of upgrading to newer facebook sdk versions. Feel free to contribute if you need additional features to be supported by the slim binding: https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid

sarapura12 commented 1 year ago

I created a slim binding to reduce the effort of upgrading to newer facebook sdk versions. Feel free to contribute if you need additional features to be supported by the slim binding: https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid

Hi. could you give an implementation example?

thisisthekap commented 1 year ago

@sarapura12 Please have a look to the java code at https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid/tree/main/java/FacebookSlim/facebookslim/src/main/java/com/tonestro/facebookslim.

This defines which methods are bound, and how they are bound. This should enable you to deduce the right C# calls.

AnTo0o0o commented 1 year ago

@thisisthekap I can't figure out how to use your library. Please provide some sample as replacing this library with yours is not a straight-forward process.

thisisthekap commented 1 year ago

@AnTo0o0o A slim binding exposes an API surface with reduced complexity which is then bound. This API surface is defined in https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid/tree/main/java/FacebookSlim/facebookslim/src/main/java/com/tonestro/facebookslim

Some examples:

DamienDoumer commented 1 year ago

Please does anybody know how to fix this issue ? It still causes crash in prod. And I can't find a nugget package for version 12 of the facebook sdk

Rudnicky commented 1 year ago

@DamienDoumer I've seen this issue couple of times and found some solution on stackoverflow when someone says that if you're going to install nugget package called Xamarin.AndroidX.Work.Work.Runtime.Ktx at least version 2.7.1 it should fix it. Since then I haven't noticed crashes anymore. However I'm not getting any info in login callback after being successfull logged in.

HarshalCapgemini commented 1 year ago

Any idea when would below thing be part of Microsoft Xamarin Facebook v11.2.0.1 or later as this is crashing for me with error "java.lang.IllegalArgumentException: air.nn.mobile.app.main: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles."

This has been resolved with SDK 12.3.0 https://github.com/facebook/facebook-android-sdk/issues/997

uwe-neuronation commented 1 year ago

It's one year ago that Facebook fixed the bug on there side. Why it takes so long to fix the Xamarin binding? This is a "blocker" bug. The app will crash if you would use the current version of the Facebook binding! Last nuget was build in October 2021.

mos379 commented 1 year ago

Problem is that the admins have not made the pipeline public nor do any code maintenance anymore for android

On Thu, Jan 19, 2023 at 10:16 AM Uwe Schaller @.***> wrote:

It's one year ago that Facebook fixed the bug on there side. Why it takes so long to fix the Xamarin binding? This is a "blocker" bug. The app will crash if you would use the current version of the Facebook binding! Last nuget was build in October 2021.

— Reply to this email directly, view it on GitHub https://github.com/xamarin/FacebookComponents/issues/236#issuecomment-1396661014, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKYEC34QMPIGC4GRBFNGCGTWTEA6FANCNFSM5T7TIQAA . You are receiving this because you commented.Message ID: @.***>

lassana commented 1 year ago

@uwe-neuronation you can build updated NuGets manually:

  1. Clone https://github.com/angpysha/FacebookComponents.git
  2. Check out fix/android-12-fix branch
  3. Modify NUGET_VERSION in Facebook.Android/build.cake to something like 13.1.0-beta01
  4. Install cake (on Mac brew install cake)
  5. Run cake Facebook.Android/build.cake. NuGets will be created in Facebook.Android/output directory.
SakthivelCapgemini commented 1 year ago

@lassana We created Custom Nuget packages with this fix/android-12-fix branch. But we are facing Nuget packages dependency issue while installing those packages. Please find the attached screenshot below.

Error: Attempting to resolve dependencies for package 'Xamarin.Facebook.Login.Android.13.1.0-beta01' with DependencyBehavior 'Lowest' Unable to find a version of 'Xamarin.Android.Arch.Core.Common' that is compatible with 'Xamarin.Android.Arch.Core.Runtime 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)', 'Xamarin.Android.Arch.Lifecycle.LiveData 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)', 'Xamarin.Android.Arch.Lifecycle.LiveData.Core 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)'.

If we updated to one package that packages depends on others, it's like looping for all packages.

Screenshot 2023-01-24 at 12 08 57 PM
czmirek commented 9 months ago

Found this project, seems like someone lost patience with this repo and created updated bindings.

https://www.nuget.org/packages/Xam.Facebook.Login.Android

This issue does not happen with this nuget.

mhdwaelanjo commented 7 months ago

We can use this library now on Facebook Audience Network SDK for .NET for Android Anjo.Android.Facebook.AudienceNetwork (>= 6.16.0) and for login Anjo.Android.Facebook (>= 16.2.0)