在设备上安装Facebook应用程序时,SSO(Singe Sign-On)无法正常工作

Emm*_*uel 5 android facebook

我正在开发一个与facebook集成的Android应用程序.当我设置LoginButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO)时,该应用程序完全正常.

当我尝试使用SSO时会出现问题.我收到以下错误.当我使用不正确的keyhash时,我曾经遇到类似的错误; 事实并非如此,因为Webview登录工作正常.更令人惊讶的是,如果应用程序安装在FB中,Android应用程序可以正常运行.例如,我是应用程序管理器,因此它默认安装在我的Facebook个人资料中,但是当我尝试使用另一个没有安装该应用程序的fb帐户时,它无效.当我尝试登录时出现以下错误,我得到一个对话框,告诉我将授予基本权限,但实际上我甚至没有获得基本权限.

我已提交该应用以供审核,以便在App Center上显示.当我这样做时,对话框显示一个复选框,我确认我的应用程序使用SSO.在我使用SSO之前,facebook是否需要批准我的应用程序(如果是这样,这没有意义)

我花了好几个小时试图解决这个问题,但我找不到解决方案.请帮忙.

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)
Run Code Online (Sandbox Code Playgroud)

小智 16

我有一个类似的logcat输出,发现它与FB 3.5源代码中的不正确有关.如上所述,它位于AuthorizationClient.java的第821行.应该有getIntExtra而不是getStringExtra.从github下载源代码并进行更改

intent.getStringExtra(NativeProtocol.EXTRA_PROTOCOL_VERSION));
Run Code Online (Sandbox Code Playgroud)

""+intent.getIntExtra(NativeProtocol.EXTRA_PROTOCOL_VERSION, 0));
Run Code Online (Sandbox Code Playgroud)