2013-06-26 33 views
5

Khi tôi sử dụng HTC Android, nó hoạt động rất tốt. Tuy nhiên, khi tôi sử dụng API của Facebook để đăng nhập bằng Samsung Android 4.2, tôi hiển thị thông báo Toast như "đăng nhập không thành công, vui lòng liên hệ với người đánh dấu ứng dụng này và yêu cầu họ phát hành 1732910 tới facebook"Đăng nhập Facebook không hoạt động khi tôi sử dụng Samsung Android 4.2

Vui lòng giúp tôi khắc phục sự cố !

public class FacebookLogin { 
/* variable Facebook */ 
private static final String FACEBOOK_APPID = "578073962236765"; 
private FacebookConnector facebookConnector; 
private final Handler mFacebookHandler = new Handler(); 
ActivityBase activity; 
Request.GraphUserCallback userCallback; 
LoginService.OnSwimLogedInEvents swimLoginCallBack; 
LoginService loginService; 
Dialog changeDialog; 
LoadingDialog loadingDialog; 

public FacebookLogin(ActivityBase activity, Request.GraphUserCallback userCallback, LoginService.OnSwimLogedInEvents swimLoginCallBack) { 
    this.activity = activity; 
    this.loadingDialog = new LoadingDialog(); 
    this.userCallback = userCallback; 
    this.swimLoginCallBack = swimLoginCallBack; 
    this.loginService = new LoginService(activity); 
    this.facebookConnector = new FacebookConnector(FACEBOOK_APPID, 
      activity, activity, new String[]{ 
      "publish_stream", "email", "user_birthday", "read_stream", "offline_access"}); 
} 

public void login() { 
    Session.initializeStaticContext(activity); 
    if (facebookConnector.getFacebook().isSessionValid()) { 
     facebookConnector.getFacebook().getSession() 
       .closeAndClearTokenInformation(); 
    } 

    AuthListener listener = new AuthListener() { 
     @Override 
     public void onAuthSucceed() { 
      doLogin(); 
     } 

     @Override 
     public void onAuthFail(String error) { 
      //(new MessageAlert()).showDialog("Facebook authetication fail\r\nError:" + error, activity); 
     } 
    }; 
    SessionEvents.addAuthListener(listener); 

    facebookConnector.login(); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); 
} 

private void doLogin() { 
    AsyncTaskBase<Void, Void, Void> t = new AsyncTaskBase<Void, Void, Void>(
      activity) { 
     @Override 
     protected Void doInBackground(Void... params) { 
      mFacebookHandler.post(facebookUserInfoRunner); 
      return super.doInBackground(params); 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
     } 
    }; 
    t.execute(); 
} 

final Runnable facebookUserInfoRunner = new Runnable() { 
    @Override 
    public void run() { 
     loadingDialog.showDialogLoading(activity); 
     Request.executeMeRequestAsync(facebookConnector.getFacebook() 
       .getSession(), new Request.GraphUserCallback() { 

      @Override 
      public void onCompleted(GraphUser user, Response response) { 
       SwimAccount currentAccount = ((SwimApp) activity.getApplication()).getCurrentAccount(); 
       currentAccount.setAvatarUrl("https://graph.facebook.com/" + user.getId() + "/picture"); 
       currentAccount.setIsLogin(true); 
       currentAccount.setFirstName(user.getFirstName()); 
       currentAccount.setLastName(user.getLastName()); 
       currentAccount.setStringId(user.getId()); 
       currentAccount.setAccountType("facebook"); 
       currentAccount.setEmail((String) response.getGraphObject().getProperty("email")); 
       currentAccount.setBirthdate(user.getBirthday()); 
       currentAccount.setGender((String) response.getGraphObject().getProperty("gender")); 
       if (userCallback != null) { 
        userCallback.onCompleted(user, response); 
       } 

       loginService.login(currentAccount.getEmail(), "", currentAccount.getAccountType(), currentAccount.getStringId(), swimLoginCallBack); 
       //changeDialog.dismiss(); 
      } 
     }); 
    } 
}; 

}

+0

tương tự ở đây Hãy trả lời. –

+0

Bất kỳ giải pháp nào cho điều này? Tôi đang gặp phải vấn đề tương tự với Samsung S4 với 4.2+. – Ron

+0

Đảm bảo bạn đang sử dụng phiên bản mới nhất của facebook sdk. Bạn có thể lấy nó từ [ở đây] (https://developers.facebook.com/android/) và cũng đi qua các hướng dẫn cơ bản ở đó. –

Trả lời

2

Tìm thấy một giải pháp cho vấn đề của tôi. Thử xóa android:noHistory="true" khỏi hoạt động đăng nhập Facebook trong tệp kê khai của bạn. Điều này gây rối với luồng xác thực của Phiên.

1

Dường như mọi người trên XDA cũng gặp phải vấn đề tương tự.

Họ đang xác nhận rằng bạn có thể thử một trong các tùy chọn sau:

(1) "Không giữ hoạt động" trên Cài đặt> Tùy chọn nhà phát triển. Nếu đó là BẬT, sau đó khi một ứng dụng gọi một số cửa sổ bật lên, hệ thống sẽ đóng ứng dụng, vì vậy hệ thống sẽ khởi động lại ứng dụng ... và có vòng lặp của bạn.

(2) Nếu bạn gỡ cài đặt ứng dụng Facebook, bạn có thể đăng nhập thông qua ứng dụng của mình rồi cài đặt lại ứng dụng Facebook.

Không chắc chắn các câu trả lời này chính thức như thế nào, nhưng nghĩ rằng nó có thể đáng để bạn quay.

Nguồn: http://forum.xda-developers.com/showthread.php?p=43200939http://forum.xda-developers.com/showthread.php?t=2186035

+0

Đã thử họ và họ không giúp đỡ. Tôi đã đăng giải pháp của mình (đã khắc phục được sự cố của mình), nhưng tôi không chắc liệu nó có phải là vấn đề của người khác hay không. – Ron

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