我修改了xdamman的優秀選擇共享器JQuery庫(https://github.com/xdamman/selection-sharer),以使用FB.ui而不是Facebook的/ dialog/feed小部件。這是因爲/ dialog/feed小部件和/sharer/sharer.php小部件都不能控制共享鏈接的鏈接摘要。所以我用下面的代碼:Facebook SDK FB.ui鏈接分享器:「發生錯誤,請稍後再試。」
FB.ui(
{
method: 'feed',
name: name, // (e.g. "Interesting News Item")
link: self.url2share, // (the current URL as determined by window.location.href, e.g. "https://www.commonspace.scot/articles/2688/poll-snp-support-surges-further-with-months-to-go-before-scottish-elections")
picture: picture, // (e.g. "https://www.commonspace.scot/public/artarticle/a3/41/4162_6493.jpg?c=64a2);%20?%3E")
caption: 'commonspace.scot',
description: text // (arbitrary text string)
},
function(response) {
if (response && response.post_id) {
//alert('Post was published.');
} else {
//alert('Post was not published.');
}
}
);
FB.ui被初始化像這樣:
window.fbAsyncInit = function() {
FB.init({
appId : '1011782388842782',
xfbml : true,
version : 'v2.4'
});
};
現在,這裏是真正的踢球者 - 在上面的代碼工作就好從開發運行時服務器在https://dev.commonspace.scot,但錯誤「發生錯誤,請稍後再試。」在主服務器上共享時遇到。
事情我已經嘗試:
FB.ui(
{
method: 'share',
href: 'https://developers.facebook.com/docs/',
},
// callback
function(response) {
if (response && !response.error_message) {
alert('Posting completed.');
} else {
alert('Error while posting.');
}
}
);
遇到錯誤:
從Facebook的網站更換用下面的演示代碼上面的代碼「這個程序是在演示模式下而你不知道沒有權限查看它。「
將所有動態生成的字符串(name,link2share,picture,description)替換爲預定義的僞文本。遇到錯誤:「應用程序配置不允許給定URL:應用程序的設置不允許使用一個或多個給定的URL,它必須與網站URL或Canvas URL匹配,或者該域必須是其中一個的子域應用程序的域名「。
添加
REDIRECT_URI: 'https://www.commonspace.scot',
作爲FB.ui.參數結果:「發生錯誤,請稍後再試。」
以下重要設置已被用於該應用指定:
- 應用在公開模式(它們已刪除「沙箱」 AFAICT)
的應用ID是使用元標記設置:
<meta property="fb:app_id" content="1011782388842782" />
...和共享者圖書館是瞭解應用程序ID。
- 顯示名稱和聯繫電子郵件都已設置爲應用程序。
- 已經指定了三個應用程序域:commonspace.scot,dev.commonspace.scot,www.commonspace.scot;儘管我也嘗試過使用一個域(commonspace.scot)。
- 網站網址設置爲「https://www.commonspace.scot/」。
重要提示:這些錯誤是相當通用的,並顯示在Facebook SDK的大部分內容中。到目前爲止,我所見過的大部分答案(包括在stackoverflow上)都與SDK的其他部分有關,例如OAuth對於這些特定錯誤特別常見。我不清楚,如果有的話,那裏適用的答案如何適用於此。我已經嘗試了各種這樣的解決方案,但其中不清楚,選擇一個特定的,「回調URI/URL」在這種情況下意味着什麼,或者它是否有幫助。此問題僅適用於共享者對話框。
預先感謝您。