Facebook SDK FB.ui Link 分享者:"An error occurred. Please try again later."
Facebook SDK FB.ui Link Sharer: "An error occurred. Please try again later."
我修改了 xdamman 的优秀选择共享器 JQuery 库 (https://github.com/xdamman/selection-sharer) 以使用 FB.ui 而不是 facebook 的 /dialog/feed 小部件。这是因为 /dialog/feed 小部件和 /sharer/sharer.php 小部件都无法控制共享 link 的 link 摘要。所以我使用了以下代码:
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'
});
};
现在真正的问题来了——上面的代码工作 JUST FINE 当 运行 来自 https://dev.commonspace.scot 的开发服务器但错误 "An error occurred. Please try again later." 每当在主服务器上共享时都会遇到。
我尝试过的事情:
将上面的代码替换为来自 facebook 网站的以下演示代码:
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.');
}
}
);
遇到错误:"This app is in demo mode and you don't have permission to view it."
用预定义的虚拟文本替换所有动态生成的字符串(名称、link2share、图片、描述)。遇到错误:"Given URL is not permitted by the application configuration.: One or more of the given URLs is not allowed by the App's settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains."
添加
redirect_uri: 'https://www.commonspace.scot',
作为 FB.ui 的参数。结果:"An error occurred. Please try again later."
已为应用程序指定以下重要设置:
- 应用程序处于发布模式(他们已删除 "sandbox" 故障)
应用 ID 是使用元标记设置的:
<meta property="fb:app_id" content="1011782388842782" />
...并且共享程序库知道应用程序 ID。
- 已为该应用设置显示名称和联系电子邮件。
- 已指定三个应用域:commonspace.scot、dev.commonspace.scot、www.commonspace.scot;尽管我也尝试过只使用一个域 (commonspace.scot)。
- 站点 URL 设置为“https://www.commonspace.scot/”。
重要说明:这些错误非常普遍,在 Facebook SDK 的大部分地方都会显示。到目前为止,我看到的大多数答案,包括关于 Whosebug 的,都与 SDK 的其他部分有关,例如OAuth 在这些特定错误中尤为常见。我不清楚那里适用的答案如何适用于此处。我已经尝试了多种此类解决方案,但尚不清楚,要选择一个特定的解决方案,"Callback URI/URL" 在这种情况下意味着什么,或者它是否有帮助。此问题仅与共享器对话框有关。
提前谢谢你。
我很想知道是否有人可以解释为什么 FB.ui 在开发站点而不是生产站点上工作。这样的回答对其他人也很有用。
与此同时,如果其他人遇到完全相同的问题,我最终会返回使用 /dialog/feed 小部件而不是 FB.ui,并进行以下更改:
var url = 'https://www.facebook.com/dialog/feed?' +
'app_id='+self.appId +
'&display=popup'+
'&picture='+encodeURIComponent(picture)+
'&caption='+document.domain+
'&name='+encodeURIComponent(name)+
'&description='+encodeURIComponent(text)+
'&link='+encodeURIComponent(self.url2share)+
'&href='+encodeURIComponent(self.url2share)+
'&redirect_uri='+encodeURIComponent(self.url2share);
您可以查看完整的源代码,或者自己使用库,使用我的 fork https://github.com/djcf/selection-sharer
我修改了 xdamman 的优秀选择共享器 JQuery 库 (https://github.com/xdamman/selection-sharer) 以使用 FB.ui 而不是 facebook 的 /dialog/feed 小部件。这是因为 /dialog/feed 小部件和 /sharer/sharer.php 小部件都无法控制共享 link 的 link 摘要。所以我使用了以下代码:
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'
});
};
现在真正的问题来了——上面的代码工作 JUST FINE 当 运行 来自 https://dev.commonspace.scot 的开发服务器但错误 "An error occurred. Please try again later." 每当在主服务器上共享时都会遇到。
我尝试过的事情:
将上面的代码替换为来自 facebook 网站的以下演示代码:
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.'); } } );
遇到错误:"This app is in demo mode and you don't have permission to view it."
用预定义的虚拟文本替换所有动态生成的字符串(名称、link2share、图片、描述)。遇到错误:"Given URL is not permitted by the application configuration.: One or more of the given URLs is not allowed by the App's settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains."
添加
redirect_uri: 'https://www.commonspace.scot',
作为 FB.ui 的参数。结果:"An error occurred. Please try again later."
已为应用程序指定以下重要设置:
- 应用程序处于发布模式(他们已删除 "sandbox" 故障)
应用 ID 是使用元标记设置的:
<meta property="fb:app_id" content="1011782388842782" />
...并且共享程序库知道应用程序 ID。
- 已为该应用设置显示名称和联系电子邮件。
- 已指定三个应用域:commonspace.scot、dev.commonspace.scot、www.commonspace.scot;尽管我也尝试过只使用一个域 (commonspace.scot)。
- 站点 URL 设置为“https://www.commonspace.scot/”。
重要说明:这些错误非常普遍,在 Facebook SDK 的大部分地方都会显示。到目前为止,我看到的大多数答案,包括关于 Whosebug 的,都与 SDK 的其他部分有关,例如OAuth 在这些特定错误中尤为常见。我不清楚那里适用的答案如何适用于此处。我已经尝试了多种此类解决方案,但尚不清楚,要选择一个特定的解决方案,"Callback URI/URL" 在这种情况下意味着什么,或者它是否有帮助。此问题仅与共享器对话框有关。
提前谢谢你。
我很想知道是否有人可以解释为什么 FB.ui 在开发站点而不是生产站点上工作。这样的回答对其他人也很有用。
与此同时,如果其他人遇到完全相同的问题,我最终会返回使用 /dialog/feed 小部件而不是 FB.ui,并进行以下更改:
var url = 'https://www.facebook.com/dialog/feed?' +
'app_id='+self.appId +
'&display=popup'+
'&picture='+encodeURIComponent(picture)+
'&caption='+document.domain+
'&name='+encodeURIComponent(name)+
'&description='+encodeURIComponent(text)+
'&link='+encodeURIComponent(self.url2share)+
'&href='+encodeURIComponent(self.url2share)+
'&redirect_uri='+encodeURIComponent(self.url2share);
您可以查看完整的源代码,或者自己使用库,使用我的 fork https://github.com/djcf/selection-sharer