2013-06-16 28 views
5

Tôi có trong ứng dụng FB AuthButton đang thực hiện kết nối với quy trình FB
Tôi có một thiết bị đang chạy phiên bản cũ của ứng dụng FB (phiên bản 1.8.3 - 1.8.4).Facebook SDK 3.0 với phiên bản ứng dụng Facebook cũ chuyển hướng đến trình duyệt và bị kẹt

khi tôi nhấp vào nút đăng nhập, quy trình không khởi động ứng dụng gốc, nhưng gọi trình duyệt để hoàn tất quá trình.
Trong nhật ký, tôi thấy những bản ghi:

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. 

và trên màn hình, trình duyệt cho thấy ảnh chụp màn hình này:

FB wtf?!

bất kỳ suy nghĩ về cách để sửa lỗi này hoặc ridirect trở lại ứng dụng của tôi ?

+0

[3] (http://stackoverflow.com/a/16970648/2405196) tùy chọn trong bài đăng này là 'WebDialog' thực hiện thay vì nút FB auth. – Mihir

+0

Tôi biết, nhưng tôi không muốn buộc người dùng của mình truy cập hộp thoại web trừ khi không có cách nào khác. vì trong trường hợp này, người dùng đã cài đặt ứng dụng, (nó không được cập nhật) và tôi không có cách nào tìm ra phiên bản ứng dụng Facebook của anh ấy và không kiểm soát quá trình đăng nhập, tôi có thể khắc phục điều đó bằng cách nào? – thepoosh

+0

SDK không được chuyển sang Trình duyệt Android. Url trong trình duyệt trước khi nó chuyển hướng đến fbconnect: // url là gì? –

Trả lời

5

Chúng tôi nhận thấy rằng phiên bản Facebook 1.9.8+ hoạt động, là mã phiên bản mã phiên bản 40477+.

Vì chúng tôi đang sử dụng lớp Facebook.java không được chấp nhận, chúng tôi đã sửa đổi validateAppSignatureForPackage(). Dường như nó hoạt động với tất cả các phiên bản của ứng dụng facebook ngay bây giờ.

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; 
} 

Nếu bạn muốn kiểm tra này chính mình, bạn có thể tìm thấy các phiên bản trước của ứng dụng facebook ở đây: http://www.androiddrawer.com/2274/download-facebook-for-android-1-9-7-app-apk/#.Uctn6Zwaux4

+0

cảm ơn câu trả lời, sẽ thử lại sau – thepoosh

+0

bạn sẽ làm gì sau khi nhận thấy rằng phiên bản bạn có không tương thích với SDK? – thepoosh

+0

validateAppSignatureForPackage() trả về một boolean đại diện cho dù phiên bản hợp lệ của ứng dụng facebook đã được cài đặt chưa. Chỉ đơn giản là trả về false, sdk không cố gắng sử dụng ứng dụng facebook và thay vào đó sử dụng FBDialog.java. Đó là sửa chữa chúng tôi thực hiện. Tôi hy vọng sẽ trả lời câu hỏi của bạn. – cowlinator