Pracuję nad aplikacją na Androida, która integruje się z Facebookiem. Aplikacja działa doskonale, gdy ustawię LoginButton.setLoginBehavior (SessionLoginBehavior.SUPPRESS_SSO).Jednokrotne logowanie (Singe Sign-On) nie działa, gdy aplikacja Facebook jest zainstalowana na urządzeniu
Problem pojawia się, gdy próbuję użyć SSO. Otrzymuję błąd poniżej. Kiedyś użyłem nieprawidłowego klucza, gdy użyłem nieprawidłowego klucza; tak już nie jest, ponieważ log z Webview działa dobrze. Zaskakujące jest to, że aplikacja na Androida działa, jeśli aplikacja jest zainstalowana w FB. Na przykład, jestem menadżerem aplikacji, dlatego domyślnie jest instalowany w moim profilu na Facebooku, ale kiedy próbuję z innym kontem fb, które nie ma zainstalowanej aplikacji, to nie działa. Kiedy próbuję się zalogować, pojawia się poniższy błąd i pojawia się okno dialogowe z informacją, że podstawowe uprawnienia zostaną przyznane, ale w rzeczywistości nie otrzymuję nawet podstawowych uprawnień.
Przesłałem aplikację do sprawdzenia, aby była widoczna w App Center. Kiedy to zrobię, okno dialogowe pokazuje pole wyboru, w którym potwierdzam, że moja aplikacja używa SSO. Czy Facebook musi zatwierdzić moją aplikację, zanim będę mógł korzystać z SSO (jeśli tak, to nie ma sensu)
Spędziłem wiele godzin próbując rozwiązać ten problem i nie mogę znaleźć rozwiązania. Proszę pomóż.
08-24 01:39:16.058: W/Bundle(21880): Key com.facebook.platform.protocol.PROTOCOL_VERSION expected String but value was a java.lang.Integer. The default value <null> was returned.
08-24 01:39:16.068: W/Bundle(21880): Attempt to cast generated internal exception:
08-24 01:39:16.068: W/Bundle(21880): java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
08-24 01:39:16.068: W/Bundle(21880): at android.os.Bundle.getString(Bundle.java:1069)
08-24 01:39:16.068: W/Bundle(21880): at android.content.Intent.getStringExtra(Intent.java:4350)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.AuthorizationClient$KatanaLoginDialogAuthHandler.tryAuthorize(AuthorizationClient.java:821)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.AuthorizationClient.tryCurrentHandler(AuthorizationClient.java:272)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.AuthorizationClient.tryNextHandler(AuthorizationClient.java:238)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.AuthorizationClient$GetTokenAuthHandler.getTokenCompleted(AuthorizationClient.java:772)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.AuthorizationClient$GetTokenAuthHandler$1.completed(AuthorizationClient.java:731)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.internal.PlatformServiceClient.callback(PlatformServiceClient.java:144)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.internal.PlatformServiceClient.handleMessage(PlatformServiceClient.java:128)
08-24 01:39:16.068: W/Bundle(21880): at com.facebook.internal.PlatformServiceClient$1.handleMessage(PlatformServiceClient.java:54)
08-24 01:39:16.068: W/Bundle(21880): at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 01:39:16.068: W/Bundle(21880): at android.os.Looper.loop(Looper.java:137)
08-24 01:39:16.068: W/Bundle(21880): at android.app.ActivityThread.main(ActivityThread.java:5227)
08-24 01:39:16.068: W/Bundle(21880): at java.lang.reflect.Method.invokeNative(Native Method)
08-24 01:39:16.068: W/Bundle(21880): at java.lang.reflect.Method.invoke(Method.java:511)
08-24 01:39:16.068: W/Bundle(21880): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
08-24 01:39:16.068: W/Bundle(21880): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
08-24 01:39:16.068: W/Bundle(21880): at dalvik.system.NativeStart.main(Native Method)
Choć ClassCastException pewno nie jest dobre, nie sądzę, że jest to przyczyną twoich problemów. Czy widzisz, czy są jakieś wyjątki odesłane z powrotem w Session.StatusCallback? –
Wyjątek ClassCastException jest generowany przez pakiet SDK serwisu Facebook, ponieważ jest pewne wywołanie, które powinno zwrócić ciąg (może jakiś klawisz Auth), gdy aplikacja łączy się poprawnie, a nie liczbę całkowitą. – Emmanuel
Rozumiem to, ale nie powoduje to również rzeczywistych problemów z logowaniem w przykładowych aplikacjach ani całego mnóstwa innych osób, które obecnie mają 3,5, więc moja hipoteza jest taka, że istnieją inne problemy powodujące, że aplikacja nie może się zalogować Czy możesz sprawdzić, czy są jakieś wyjątki przekazane do twojego StatusCallbacka? –