2013-09-04 40 views
6

Tôi có thể kết nối thành công với facebook và nhận được danh sách bạn bè. Tất cả các kết nối đều OK. Nhưng khi tôi xóa dữ liệu của Facebook (thông qua cài đặt-> Ứng dụng) và ứng dụng của tôi, sự cố đăng nhập xảy ra. [SDK 3.5]Android - Đăng nhập Facebook chỉ gây ra lỗi onResume cho lần đầu tiên

  1. Khởi chạy ứng dụng của tôi
  2. Hãy kết nối facebook
  3. Facebook yêu cầu tên người dùng và mật khẩu, nhập chúng
  4. Chờ một chút
  5. Nó cho thấy màn hình Permission mà yêu cầu người dùng cơ bản thông tin và lỗi xảy ra: "Ứng dụng của bạn ngừng hoạt động bất ngờ. Vui lòng thử lại (FORCE CLOSE)"

Khi tôi nhấp vào Buộc Đóng, cùng một công cụ xóa r xảy ra một lần nữa và một lần nữa đột ngột (trong khi màn hình cho phép vẫn còn phía sau). Nếu tôi có thể đủ nhanh, tôi nhấn Force Close và sau đó Allow Permission, mọi thứ đều ổn và tôi có thể nhìn thấy bạn bè của tôi. Vì vậy, lỗi này có nghĩa là một cái gì đó giống như không có gì? Trong nhật ký, có 3-4 thông báo cùng một ngoại lệ về Fatal vì mỗi khi tôi nhấp vào ĐĂNG NHẬP, lỗi xảy ra lần nữa. Lỗi này xảy ra khi tôi thử ứng dụng trên điện thoại của mình (SE Xperia Arc S, 2.3.3). Nhưng khi tôi thử trên Emulators, lỗi không xảy ra. Nó hoạt động mà không có vấn đề gì. (Giả lập là 2.3.3 và 4,2)

09-04 18:09:47.916 E/AndroidRuntime(29511): FATAL EXCEPTION: main 
09-04 18:09:47.916 E/AndroidRuntime(29511): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:47.916 E/AndroidRuntime(29511): Caused by: java.lang.NullPointerException 
09-04 18:09:47.916 E/AndroidRuntime(29511):  ... 12 more 
09-04 18:09:51.526 E/AndroidRuntime(29538): FATAL EXCEPTION: main 
09-04 18:09:51.526 E/AndroidRuntime(29538): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:51.526 E/AndroidRuntime(29538): Caused by: java.lang.NullPointerException 
09-04 18:09:51.526 E/AndroidRuntime(29538):  ... 12 more 
09-04 18:09:53.786 E/AndroidRuntime(29547): FATAL EXCEPTION: main 
09-04 18:09:53.786 E/AndroidRuntime(29547): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:53.786 E/AndroidRuntime(29547): Caused by: java.lang.NullPointerException 
09-04 18:09:53.786 E/AndroidRuntime(29547):  ... 12 more 
09-04 18:09:55.516 E/AndroidRuntime(29557): FATAL EXCEPTION: main 
09-04 18:09:55.516 E/AndroidRuntime(29557): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:55.516 E/AndroidRuntime(29557): Caused by: java.lang.NullPointerException 
09-04 18:09:55.516 E/AndroidRuntime(29557):  ... 12 more 
09-04 18:09:57.776 E/AndroidRuntime(29564): FATAL EXCEPTION: main 
09-04 18:09:57.776 E/AndroidRuntime(29564): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:57.776 E/AndroidRuntime(29564): Caused by: java.lang.NullPointerException 
09-04 18:09:57.776 E/AndroidRuntime(29564):  ... 12 more 
09-04 18:09:59.186 E/dalvikvm(29571): Could not find class 'dalvik.system.BaseDexClassLoader', referenced from method com.facebook.common.dextricks.SystemClassLoaderAdder.a 
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladDumpProfiles 
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladResetProfiles 
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladPrintHeaderInfo 
09-04 18:09:59.936 E/AndroidRuntime(29578): FATAL EXCEPTION: main 
09-04 18:09:59.936 E/AndroidRuntime(29578): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:09:59.936 E/AndroidRuntime(29578): Caused by: java.lang.NullPointerException 
09-04 18:09:59.936 E/AndroidRuntime(29578):  ... 12 more 
09-04 18:10:02.006 E/AndroidRuntime(29585): FATAL EXCEPTION: main 
09-04 18:10:02.006 E/AndroidRuntime(29585): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException 
09-04 18:10:02.006 E/AndroidRuntime(29585): Caused by: java.lang.NullPointerException 
09-04 18:10:02.006 E/AndroidRuntime(29585):  ... 12 more 
09-04 18:10:04.566 E/ONRESUME(29605): Onresume worked 
09-04 18:10:04.636 E/STATEM (29605): OPENING 
09-04 18:10:05.186 E/ONRESUME(29605): Onresume worked 

Sau khi kết nối đầu tiên, tôi có thể tìm thấy bạn bè của tôi mà không có lỗi. Nó chỉ xảy ra ngay sau khi tôi kết nối Facebook cho lần đầu tiên và nó sẽ hỏi tên tôi và mật khẩu (và sau đó nhấp vào Đăng nhập)

@Override 
    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    uiHelper = new UiLifecycleHelper(this, callback); 
    uiHelper.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_fb_findfriends); 
    LinearLayout v = (LinearLayout) findViewById(R.id.fb_app_users); 
    openSession(v); 

    } 

public void openSession(View v){ 
     // start Facebook Login 
     Session.openActiveSession(this, true, callback); 

    } 

@Override 
    protected void onResume() { 
     super.onResume(); 
     uiHelper.onResume(); 
     Log.e("ONRESUME", "Onresume çalıştı"); 
    } 

private void requestMyAppFacebookFriends(Session session) { 
     Request friendsRequest = createRequest(session); 
     friendsRequest.setCallback(new Request.Callback() { 

      @Override 
      public void onCompleted(Response response) { 

       List<GraphUser> friends = getResults(response); 
       //Display Friends 
      } 
     }); 
    friendsRequest.executeAsync(); 
} 

Ngoài ra tôi không thể hiểu những gì là null từ dữ liệu ghi nhận.

CẬP NHẬT! Tôi đã tìm thấy dòng xảy ra lỗi. Đó là bên trong đường com.facebook.AuthorizationClient.java 135

void startOrContinueAuth(AuthorizationRequest request) { 
     if (appEventsLogger == null || appEventsLogger.getApplicationId() != request.getApplicationId()) { 
      Log.e("HATA!", "BOOM"); 
      appEventsLogger = AppEventsLogger.newLogger(context, request.getApplicationId()); 
     } 

Và phương pháp startOrContinueAuth này bị sa thải trong com.Facebook.LoginActivity

@Override 
public void onResume() { 
    super.onResume(); 

    // If the calling package is null, this generally means that the callee was started 
    // with a launchMode of singleInstance. Unfortunately, Android does not allow a result 
    // to be set when the callee is a singleInstance, so we log an error and return. 
    if (callingPackage == null) { 
     Log.e(TAG, "Aheyy"+NULL_CALLING_PKG_ERROR_MSG); 
     finish(); 
     return; 
    } 

    authorizationClient.startOrContinueAuth(request); 
} 
     if (getInProgress()) { 
      continueAuth(); 
     } else { 
      authorize(request); 
     } 
    } 

UPDATE 2!

  • Tôi rất bối rối. Tôi đã đơn giản hóa ứng dụng của mình thành phương thức cơ bản openActiveSession() cơ bản. Sự cố
  • Tôi đã thử ứng dụng mẫu của Facebook, FriendPicker và nó cũng có thể bị lỗi với cùng một lỗi đăng nhập.
  • đã thử trên trình mô phỏng, nó hoạt động nhưng khi tôi xoay màn hình khi màn hình ủy quyền hiển thị (hủy bỏ cho phép), cùng một lỗi xảy ra (không thể để onResume blah blah ...) Nhận lỗi tương tự trên ứng dụng mẫu của Facebook là lạ
+1

bạn có thể đăng mã Hoạt động/Phân đoạn không? – Emmanuel

+0

đã thêm một số phần của mã, requestMyAppFacebookFriends (Phiên phiên) được thực hiện sau khi trạng thái thay đổi. –

+0

Bạn đang gọi requestMyAppFacebookFriends (Session session) từ bên trong cuộc gọi() trong cuộc gọi lại sau khi bạn kiểm tra station.isOpened()? – Emmanuel

Trả lời

1

Tôi không tin rằng đây là vấn đề với ứng dụng của bạn. Mọi người đã báo cáo lỗi này và tôi vừa trả lời một câu hỏi tương tự here. Về cơ bản, Facebook đã phát hành phiên bản SDK mới của họ ngày hôm qua để khắc phục sự cố onResume NPE trong AuthorizationClient của họ. Xem liệu việc nâng cấp có khắc phục được sự cố của bạn hay không.

0

Theo nhật ký thay đổi https://developers.facebook.com/docs/android/change-log-3.x/,
trong facebook phiên bản 3.5.1 cố định rất nhiều vấn đề về xác thực và ứng dụng các sự kiện đăng nhập, vì vậy có thể nó đã được giải quyết trong một phiên bản mới nhất có thể được tải về từ https://github.com/facebook/facebook-android-sdk. Tôi hy vọng nó có thể giải quyết vấn đề của bạn :)

0

Về cơ bản sự cố này xảy ra khi hoạt động gọi điện không hoạt động hoặc bị hủy. Trong android, phương thức onActivityResult() được gọi sau khi đăng nhập. Hoạt động này bị phá hủy bởi thiết bị di động (tùy chọn Không giữ hoạt động cho phép trong cài đặt tùy chọn dành cho nhà phát triển). Xin vui lòng Sau khi kiểm tra chéo trong các thiết lập tùy chọn phát triển mà các hoạt động không giữ được kích hoạt hoặc vô hiệu hóa.

0

Đảm bảo trong tệp kê khai của bạn rằng hoạt động của ký tự ở dạng dọc. Có một vấn đề với mất hoạt động nếu nó không phải là trong bức chân dung .. đó là rất lame ...: |

Các vấn đề liên quan