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
- Khởi chạy ứng dụng của tôi
- Hãy kết nối facebook
- Facebook yêu cầu tên người dùng và mật khẩu, nhập chúng
- Chờ một chút
- 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ạ
bạn có thể đăng mã Hoạt động/Phân đoạn không? – Emmanuel
đã 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. –
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