2013-06-16 8 views
5

私は自分のアプリにFBプロセスへの接続を行っているFB AuthButtonを持っています
FBアプリの古いバージョン1.8.3~1.8.4)。古いFacebookアプリのバージョン3.0を使用しているFacebook SDK 3.0はブラウザにリダイレクトされ、スタックに入ります

ログインボタンをクリックすると、プロセスはネイティブアプリを起動しませんが、ブラウザを呼び出してプロセスを終了します。
ログでは、私はこれらのログを参照してください。

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?!

この問題を解決するか、私のアプリに戻ってridirectする方法上の任意の考え?

+0

[第3回](http://stackoverflow.com/a/16970648/2405196)オプションでこの投稿はFB authボタンの代わりに 'WebDialog'を実装しています。 – Mihir

+0

私は知っていますが、他の方法がない限り、ユーザーに強制的にWebダイアログを表示させたくありません。この場合、ユーザーはアプリがインストールされているので(更新されていません)、Facebookのアプリのバージョンを知る方法がなく、ログインプロセスを制御できません。どうすれば修正できますか? – thepoosh

+0

SDKはAndroidブラウザには移動しないでください。 fbconnect:// urlにリダイレクトされる前のブラウザのURLは何ですか? –

答えて

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

+0

回答ありがとう、後で試してみてください – thepoosh

+0

あなたが持っているバージョンがSDKと互換性がないことに気がついたらどうしますか? – thepoosh

+0

validateAppSignatureForPackage()は、有効なバージョンのfacebookアプリがインストールされているかどうかを示すブール値を返します。 falseを返すだけで、sdkはfacebookアプリを使用しようとせず、代わりにFBDialog.javaを使用します。それが我々が作った修正です。 私はあなたの質問に答えることを願っています。私の場合、 – cowlinator

関連する問題