Question

I'm using Prime31 SocialNetworking plugin for Unity3D with Facebook SDK 3.5 and trying to login Facebook on the Android 2.3.5 device. Facebook application is installed on my device and a Facebook user is logged in prior to application launch. Default login behaviour SSO_WITH_FALLBACK is used.

When I initiate a login from my application I observe the following behaviour:

  1. When the application starts the Facebook session is in CREATED state.
  2. A permissions dialog prompts me to allow basic read access for my application.
  3. I click OK and then my main application activity is shown instead of Facebook's login dialog (maybe it's intentional but Session.getActiveSession().closeAndClearTokenInformation() and Session.setActiveSession(null) are called prior to new Session.OpenRequest(FacebookPlugin.getActivity()) inside Prime31 plugin).
  4. My application's Facebook session is not opened (is in CLOSED_LOGIN_FAILED state).

The logcat reports me these lines (package name and Facebook app ID are replaced):

I/Prime31 ( 5077): FacebookPlugin: openActiveSession.call with state: CLOSED_LOGIN_FAILED, exception: com.facebook.FacebookException: Log in attempt aborted.
I/Prime31 ( 5077): session state: OPENING
I/ActivityManager( 1444): Starting activity: Intent { act=SSO_WITH_FALLBACK cmp=MY_PACKAGE_NAME/com.facebook.LoginActivity (has extras) } from pid 5077
I/Prime31 ( 5077): FacebookPlugin: openActiveSession.call with state: OPENING, exception: null
V/ActivityManager( 1444): Checking to restart com.facebook.LoginActivity: changed=0x0, handles=0x0
V/ActivityManager( 1444): oldConfig={ scale=1.0 imsi=250/2 loc=ru_RU touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=3 skin=default fontsize=3}
V/ActivityManager( 1444): newConfig={ scale=1.0 imsi=250/2 loc=ru_RU touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=3 skin=default fontsize=3}
V/WindowManager( 1444): Finished animation in AppWindowToken{40e61148 token=HistoryRecord{408389c8 MY_PACKAGE_NAME/com.prime31.UnityPlayerNativeActivity}} @ 6621760
I/ActivityManager( 1444): Displayed MY_PACKAGE_NAME/com.facebook.LoginActivity: +547ms
V/WindowManager( 1444): Finished animation in AppWindowToken{40c836a8 token=HistoryRecord{40d3d640 MY_PACKAGE_NAME/com.facebook.LoginActivity}} @ 6621760
D/NativeCrypto( 3576): returned from sslSelect() with result 1, error code 2
W/fb4a(:<default>):BlueServiceQueue( 3576): Exception during service
W/fb4a(:<default>):BlueServiceQueue( 3576): com.facebook.http.protocol.ApiException: Invalid application MY_VALID_APP_ID
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:81)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:110)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.http.protocol.ApiResponse.h(ApiResponse.java:291)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:272)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:29)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:152)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:16)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:366)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:259)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:293)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:53)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:230)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:444)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at com.facebook.common.executors.HandlerExecutorServiceImpl$ListenableScheduledFuture.run(HandlerExecutorServiceImpl.java:268)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at android.os.Handler.handleCallback(Handler.java:587)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at android.os.Handler.dispatchMessage(Handler.java:92)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at android.os.Looper.loop(Looper.java:150)
W/fb4a(:<default>):BlueServiceQueue( 3576):     at android.os.HandlerThread.run(HandlerThread.java:60)
W/Bundle  ( 5077): Key com.facebook.platform.protocol.PROTOCOL_VERSION expected String but value was a java.lang.Integer.  The default value <null> was returned.
W/Bundle  ( 5077): Attempt to cast generated internal exception:
W/Bundle  ( 5077): java.lang.ClassCastException: java.lang.Integer
W/Bundle  ( 5077):      at android.os.Bundle.getString(Bundle.java:1040)
W/Bundle  ( 5077):      at android.content.Intent.getStringExtra(Intent.java:3685)
W/Bundle  ( 5077):      at com.facebook.AuthorizationClient$KatanaLoginDialogAuthHandler.tryAuthorize(AuthorizationClient.java:821)
W/Bundle  ( 5077):      at com.facebook.AuthorizationClient.tryCurrentHandler(AuthorizationClient.java:272)
W/Bundle  ( 5077):      at com.facebook.AuthorizationClient.tryNextHandler(AuthorizationClient.java:238)
W/Bundle  ( 5077):      at com.facebook.AuthorizationClient$GetTokenAuthHandler.getTokenCompleted(AuthorizationClient.java:772)
W/Bundle  ( 5077):      at com.facebook.AuthorizationClient$GetTokenAuthHandler$1.completed(AuthorizationClient.java:731)
W/Bundle  ( 5077):      at com.facebook.internal.PlatformServiceClient.callback(PlatformServiceClient.java:144)
W/Bundle  ( 5077):      at com.facebook.internal.PlatformServiceClient.handleMessage(PlatformServiceClient.java:128)
W/Bundle  ( 5077):      at com.facebook.internal.PlatformServiceClient$1.handleMessage(PlatformServiceClient.java:54)
W/Bundle  ( 5077):      at android.os.Handler.dispatchMessage(Handler.java:99)
W/Bundle  ( 5077):      at android.os.Looper.loop(Looper.java:150)
W/Bundle  ( 5077):      at android.app.ActivityThread.main(ActivityThread.java:4385)
W/Bundle  ( 5077):      at java.lang.reflect.Method.invokeNative(Native Method)
W/Bundle  ( 5077):      at java.lang.reflect.Method.invoke(Method.java:507)
W/Bundle  ( 5077):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
W/Bundle  ( 5077):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
W/Bundle  ( 5077):      at dalvik.system.NativeStart.main(Native Method)

When I logout from Facebook within the native app the behaviour slightly changes - the login screen appears, but when the main application activity is shown I get the same CLOSED_LOGIN_FAILED session state.

I've checked my application ID and hash key in the Facebook app settings: both are matching to my app's settings. Hash key logcatted by Prime31 plugin is the same as was created on my Windows evironment. When I changed app ID to something different I got another error - "invalid app id". So app id seems to be set up correctly. What else I might miss?

Was it helpful?

Solution

For all who encounter similar issues check your Facebook application sandbox mode and currently active Facebook user when starting your application. In my case I was starting the application which was in the sandbox mode and the current Facebook user was not from the granted list of users in the Facebook application settings.

OTHER TIPS

In case that helps anyone, I had the same problem and it was due to the fact that my test phone had its time set 3-4 months in the future.

This can happen when the facebook application identifies itself with an ID not previously registered at facebook. Go to https://developers.facebook.com , register a new application and you will receive a numerical ID (something like 10 digits) which you should plant in the code. in react-native-fbsdk, this is called facebook_app_id or facebook_application_id.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top