带有旧Facebook应用程序版本的Facebook SDK 3.0重定向到浏览器并被卡住

时间:2013-06-16 09:35:18

标签: android facebook android-facebook

我在我的应用程序中有一个FB AuthButton正在连接到FB进程
我有一个设备正在运行旧版本的FB应用程序(版本1.8.3 - 1.8.4)。

当我点击登录按钮时,该过程不会启动本机应用程序,而是调用浏览器来完成该过程。
在日志中,我看到了这些日志:

06-16 12:26:00.709: E/ActivityThread(21597): Failed to find provider info for com.facebook.katana.provider.AttributionIdProvider
06-16 12:26:03.321: E/Tab(21678): onReceivedError -10 fbconnect://success#access_token=MY_TOKEN&expires_in=5170432 The protocol is not supported.

并在屏幕上显示此屏幕截图:

FB wtf?!

有关如何解决这个问题或想法回到我的应用程序的任何想法?

1 个答案:

答案 0 :(得分:5)

我们发现Facebook版本1.9.8+有效,版本代码版本代码为40477 +。

当我们使用已弃用的Facebook.java类时,我们修改了validateAppSignatureForPackage()。它现在似乎适用于所有版本的facebook应用程序。

private boolean validateAppSignatureForPackage(Context context, String packageName) 
{
    PackageInfo packageInfo;
    try 
    {
        packageInfo = context.getPackageManager().getPackageInfo(packageName, 
                      PackageManager.GET_SIGNATURES);
        if(packageInfo.versionCode<40477)
        {
            Log.i("validateAppSignatureForPackage", 
              "Your facebook app version is prior to 1.9.8. Update your facebook app"); 
            return false;
        }
    } 
    catch (NameNotFoundException e) 
    {
        Log.i("validateAppSignatureForPackage", e.getMessage());
        return false;
    }
    catch(Exception e)
    {
        Log.i("validateAppSignatureForPackage", e.getMessage());
        return false;
    }

    for (Signature signature : packageInfo.signatures) {
        if (signature.toCharsString().equals(FB_APP_SIGNATURE)) {
            return true;
        }
    }
    return false;
}

如果您想自己测试一下,可以在此处找到以前版本的Facebook应用:http://www.androiddrawer.com/2274/download-facebook-for-android-1-9-7-app-apk/#.Uctn6Zwaux4