2013-07-31 69 views
11

Điều này đã hoạt động tốt trong hơn một tuần.Facebook FB.ui gửi hộp thoại không liên tục trả về lỗi liên kết không hợp lệ

FB.ui({ 
    method: 'send', 
    to: connectionid, 
    name: subject, 
    picture: staticurl + 'images/logoformysite.png', 
    link: homeurl + '/' + username + '/something=' + var1 +'&somethingelse=' + encodeURI(var2) + '&evenmore=' + encodeURI(var3), 
    description: invitemessage, 
}); 

Ban đầu tôi đã gặp lỗi trong tuần trước nếu URL nằm trong miền Facebook, Facebook sẽ chặn nó. Tôi đã sửa lỗi đó và bây giờ cả hình ảnh và liên kết không thuộc về miền Facebook và đến từ trang web của tôi. Nhưng điều này bắt đầu xảy ra hôm nay với không có gì thay đổi. Nó liên tục.

An error occurred. Please try again later. 

API Error Code: 100 API Error Description: Invalid parameter Error Message: 'link' is invalid. 

Không rõ lý do tại sao nó hoạt động đôi khi và không phải lúc khác ngay cả khi tôi gửi nó cho cùng một người dùng. Tự hỏi nếu tôi bỏ lỡ một thông báo. Nhưng tôi hy vọng ít nhất nó sẽ thất bại nhưng điều đó không đúng.


UPDATE: Tôi không chắc chắn như thế nào liên kết Tôi đang thiết trong hộp thoại có thể được thiết lập trên toàn cầu trên trang. Nó sẽ gửi cho người nhận thông báo liên kết sai. Sẽ rất hữu ích khi xem ví dụ về cách thức làm việc ở trên trong thế giới đồ thị mở mới.

ĐÁP AUG 12 2013

Vấn đề xoay quanh url của chúng tôi là năng động và cần lực lượng bộ nhớ đệm mỗi lần. Bây giờ tôi thực hiện cuộc gọi ajax đến "https://developers.facebook.com/tools/debug/og/object" để làm mới và sau đó khởi chạy hộp thoại gửi.

+0

an toàn để giả định bạn tự tin rằng 'homeurl + '/' + tên + '/ cái gì đó =' + var1 + '& somethingelse =' + encodeURI (var2) + '& evenmore = '+ encodeURI (var3) 'luôn luôn tạo chuỗi url giống nhau (hợp lệ)? Bạn có thể muốn trích xuất nó thành một biến và 'console.log()' nó ra trước khi 'fb.ui()' gọi như kiểm tra sanity –

+0

Tôi đã kiểm tra kỹ trong bảng điều khiển chrome và đó là url đầy đủ . https: // mydomain .... –

+0

Tôi liên tục phải đối mặt với vấn đề này trong 2 ngày qua – rdsoze

Trả lời

9

Tôi gặp vấn đề tương tự và đã ngừng hoạt động kể từ tuần trước.

Đây là giải pháp của tôi:

Đến Facebook debugger và thêm URL của bạn. Nhấp vào "Gỡ lỗi" và sửa tất cả các cảnh báo được hiển thị bởi Facebook.

Để sửa lỗi, tôi phải thêm thẻ meta og.url vào trang của mình. Giá trị phải chính xác giống như giá trị bạn muốn chia sẻ (không có chuyển hướng). Sau đó, Facebook đã gửi cho tôi thông báo này (cảnh báo):

ứng dụng của bạn, XXX, bây giờ là phù hợp với các bài đăng trong luồng URL di cư an ninh. Không có thêm hành động được yêu cầu.

Cố gắng chia sẻ liên kết của bạn với FB.ui một lần nữa và bây giờ bài đăng của bạn sẽ tự động hiển thị giá trị og của bạn.

Lưu ý: Facebook October breaking change sẽ tự động sử dụng những og METAS thay vì tùy chỉnh FB.ui thông số, vì vậy bây giờ bạn có thể kích hoạt sự thay đổi phá vỡ để chuẩn bị sẵn sàng và loại bỏ tên/hình ảnh/mô tả từ mã của bạn.

CẬP NHẬT: Vấn đề này có thể xảy ra một lần nữa ngay cả khi những gì tôi đã đề cập ở trên được triển khai chính xác.

Nếu trường hợp của bạn là do bạn phải thực thi Facebook để "cạo" trang của bạn.Quá trình này được tự động thực hiện bởi Facebook khi bạn sử dụng trình gỡ lỗi đối tượng Facebook hoặc bạn sao chép/dán liên kết của bạn trên dòng thời gian/tin nhắn riêng tư. Nếu bạn sử dụng JavaScript SDK, bạn phải yêu cầu Facebook lập chỉ mục và lưu trữ trang của bạn.

Bạn sẽ không tìm thấy điều này trong tài liệu Facebook liên quan đến JavaScript SDK (hoặc bạn may mắn) để tiết kiệm cho bạn tất cả những ngày tôi mất để tìm ra vấn đề không thể tin được này (nhớ Facebook chỉ nói liên kết của bạn không hợp lệ) có thể tìm thêm chi tiết trên this page.

Tôi đã cố gắng sử dụng API đồ thị để thực thi trang mới được tạo của mình để được cạo bởi Facebook, nếu nó hoạt động cho bạn, bạn may mắn. Phương thức thứ hai không được đề cập nhưng được tạo ra cùng một kết quả là gửi yêu cầu tới trang Trình gỡ lỗi đối tượng Facebook và thêm liên kết trang của bạn vào URL (ví dụ: https://developers.facebook.com/tools/debug/og/object?q=YourPageUrlHere). Bằng cách làm điều này Facebook sẽ lần này cạo trang của bạn và bây giờ bạn có thể chia sẻ các liên kết của bạn với Facebook API, mọi thứ hiện đang hoạt động.

+0

Thú vị ... nhưng url tôi chia sẻ bằng hộp thoại được tùy chỉnh với một số tham số chuỗi truy vấn. SendDialog được khởi chạy bởi nhiều neo với các giá trị động. Điều này sẽ không còn được hỗ trợ? Tôi không thể chỉ đặt một og.url vào thẻ trang vì nó sẽ không hoạt động. –

+0

Tôi nghĩ sự di cư đang diễn ra vào tháng 10 nhưng có vẻ như nó đã phá vỡ chúng ta. Tôi đã thêm một câu hỏi mới để giải quyết vấn đề này tại đây. http://stackoverflow.com/questions/18088472/migrating-facebook-send-dialog-parameters-to-opengraph-changes –

+0

Tôi đã sửa tất cả các cảnh báo bằng cách thêm các thẻ og vào các trang. Bây giờ trình gỡ lỗi facebook rất vui. Sử dụng Hộp thoại gửi hoạt động tốt cho tài khoản của tôi (tôi đã có thể gửi tin nhắn) nhưng vẫn không thành công cho các thành viên khác trong nhóm của tôi có cùng liên kết là lỗi không hợp lệ. –

0

Đảm bảo rằng khi facebook yêu cầu url của bạn, nó sẽ không bao giờ được chuyển tiếp.

Cách để làm điều này là hiển thị facebook bằng một trang đặc biệt của riêng nó, chứa tất cả các thành phần phù hợp.

Dưới đây là một ví dụ (loại dựa trên php + symfony 1.4):

<?php 
    if(preg_match('/facebookexternalhit/i', $request->getHttpHeader('User-Agent'))) 
    { ?> 
     <!DOCTYPE html> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
     <head> 
     <meta property="fb:app_id" content="<?php echo sfConfig::get('app_facebook_app_id'); ?>" /> 
     <meta property="og:url" content="<?php echo sfContext::getInstance()->getRequest()->getUri(); ?>" /> 
     <meta property="og:title" content="<?php echo $title; ?>" /> 
     <meta property="og:description" content="<?php echo $description; ?>" /> 
     <meta property="og:image" content="<?php echo $image; ?>" /> 
     </head> 
     <body> 
     hello Facebook! 
     </body> 
    </html> 
    <?php 
    } 
?> 
+0

Chúng tôi không có bất kỳ chuyển tiếp url nào đang diễn ra. Url được truyền để gửi Hộp thoại là url hiển thị khi trang được hiển thị. –

+1

@hexiecode: Bạn không nên mã như thế này anyway, 'og' không chỉ được sử dụng bởi Facebook, cho những người khác như Twitter nó là tốt hơn không có chuyển hướng là tốt. Nếu thay đổi tác nhân người dùng Facebook hoặc anh ta muốn triển khai Twitter, anh ta sẽ phải duy trì mã này và nó sẽ phức tạp hơn. Nếu bạn nhìn vào các trang web Tin tức, bạn có thể thấy trong mã nguồn 'met' +' fb' + 'twitter' được tạo ra. – glautrou

5

Tôi có thể khẳng định rằng đây đã được cố định cho tôi khi tôi buộc Facebook để đầu cạo URL trước khi cố gắng để gửi cùng URL thông qua Hộp thoại Giao diện người dùng FB.

Mẫu mã:

FB.api('https://graph.facebook.com/', 'post', { 
    id: '[URL]', 
    scrape: true 
}, function(response) { 
    FB.ui({ 
     method: 'send', 
     name: '[name]', 
     picture: '[Picture URL]', 
     link: [URL]', 
     description: '[description]' 
    }); 
}); 
+1

Đã có cùng một vấn đề này, và giải pháp này vẫn còn có vẻ là làm việc. Nếu url bạn dự định chia sẻ người dùng có thể chưa được cạo trước đó (đặc biệt nếu nó tùy chỉnh cho người dùng, được tạo ngay sau đó ở đó), cuộc gọi này sẽ làm chủ máy bơm, như vậy, bạn sẽ không gặp lỗi 100 khi bạn chia sẻ. – Dtipson

+0

@Dtipson, nó vẫn hoạt động với Graph API 2.0 mới mà chúng được phát hành hôm nay? – Scott