2013-09-25 78 views
6

Tôi đang sử dụng facebook android sdk v3.5 trong ứng dụng của tôi để chia sẻ messsage. Đối với số liệu thống kê tôi cần theo dõi xem tin nhắn đã được đăng thành công hay chưa. Tuy nhiên, tôi luôn nhận được null bằng cách nhận FacebookDialog.getNativeDialogCompletionGesture trong onActivityResult()Android Facebook SDK Chia sẻ hộp thoại: không bao giờ trở về Hoàn thành cử chỉ

Mã tôi sử dụng rất chuẩn.

Mã để gọi hộp thoại phần facebook:

private void sendToFacebook() 
    { 
     if (!FacebookDialog.canPresentShareDialog(getActivity().getApplicationContext(),  FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) 
     { 
     return; 
     } 

     FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(getActivity()) 
       .setName(getString(R.string.refer_friend_facebook_name)) 
       .setDescription(getString(R.string.refer_friend_facebook_description)) 
       .setCaption(getString(R.string.facebook_app_name)) 
       .setLink(getString(R.string.web_endpoint)) 
       .setPicture(getString(R.string.facebook_picture_90)) 
       .build(); 

     activity.getFacebookUiHelper().trackPendingDialogCall(shareDialog.present()); 

    } 

Mã tôi sử dụng để kết quả quá trình gọi:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      facebookUiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() 
      { 
       @Override 
       public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) 
       { 
       // track on error             
       } 

       @Override 
       public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) 
       { 
        if (FacebookDialog.getNativeDialogDidComplete(data)) 
        { 
         if (FacebookDialog.getNativeDialogCompletionGesture(data) == null 
           || FacebookDialog.COMPLETION_GESTURE_CANCEL.equals(FacebookDialog.getNativeDialogCompletionGesture(data))) 
         { 
          // track cancel             
         } 
         else 
         { 
          // track post 
         } 
        } 
        else 
        { 
         // track cancel    
        } 
       } 
      }); 
} 

Trong tài liệu facebook sdk nó được tuyên bố rằng:

FacebookDialog. getNativeDialogCompletionGesture - Chỉ khả dụng nếu người dùng đăng nhập vào ứng dụng của bạn bằng Facebook và đã hoàn thành là đúng. Giá trị là "bài đăng" hoặc "hủy".

Nhưng tôi không thể hiểu chính xác cụm từ này có ý nghĩa gì.

Trả lời

3

Điều đó có nghĩa là bạn chỉ nhận được thông báo Hoàn thành nếu người dùng đã "xác thực" ứng dụng của bạn (tức là họ đã nhấp vào một số hình thức đăng nhập qua nút Facebook trong ứng dụng của bạn và đã cấp cho ứng dụng của bạn ít nhất là quyền cơ bản).

Nếu không, thì tất cả những gì bạn nhận được là getNativeDialogDidComplete, luôn trả về đúng (cho dù người dùng đã nhấp vào "Chia sẻ" hoặc "Hủy") trừ khi xảy ra lỗi.

+1

Cảm ơn bạn! Điều này giải thích vấn đề. Tuy nhiên nó khá lạ từ phía facebook. –

+0

Tại sao chọn Facebook ??? Chúng tôi đang sử dụng Đăng nhập một lần thông qua ứng dụng Facebook mặc định? Tại sao chúng ta cần điều này? – BQuadra

+1

Lý do cơ bản được đưa ra, nếu người dùng chưa ủy quyền ứng dụng của bạn thông qua FB, thì ứng dụng của bạn không thể biết người dùng đang làm gì trên FB. –