我正在尝试从我的Web应用程序中分享链接至Facebook。我已经初始化了SDK,并且以下代码可以正常工作:
callToMyAPI()
.then(function(response) {
FB.ui({
method: "share",
href: "http://www.google.com",
}, function(response) {
console.log(response);
});
});
这将弹出Facebook分享对话框,其中包含一个指向http://www.google.com的链接和一个小的嵌入式预览(底部的框显示来自URL的图像,以及页面的标题和描述/摘要)。当我点击对话框中的“发布到Facebook”按钮后,切换到Facebook页面,我会看到带有共享链接的帖子。
但是我需要动态设置
href
参数,使用从我的API返回的值。因此,我改为这样做:callToMyAPI()
.then(function(response) {
var url = response; // http://www.google.com
FB.ui({
method: "share",
href: url,
}, function(response) {
console.log(response);
});
});
基本上,我所做的就是用变量
url
(其值为响应,即http://www.google.com
)替换硬编码的"http://www.google.com"
。其他所有内容都完全相同。但是,当我这样做时,会发生以下情况:
Facebook分享对话框仍然打开,但缺少我要分享的URL的嵌入式预览。
当我单击“发布到Facebook”按钮时,对话框关闭,但从未发布任何内容到Facebook。记录下来的响应只是一个空数组(
[]
)
href
值时会出现问题,但我不知道原因。我该如何解决呢?更新:经过多次尝试和错误,“我发现了这种奇怪的行为......”
如果我将
http://dev.example.com
用作href
值(其中example.com实际上是我的真实域),则在共享对话框中没有预览,并且不会发布任何内容到Facebook。FB.ui({
method: "share",
href: "http://dev.example.com"
});
但是如果我使用http://www.example.com
(注意www
)作为href
值(再次强调,example.com实际上是我的真实域名),我仍然无法在分享对话框中获得预览,但是帖子确实可以发布:
FB.ui({
method: "share",
href: "http://www.example.com"
});
然而,由于在共享对话框中仍然没有预览功能,它实际上并未将链接附加到消息中。因此,在Facebook上,我只能得到一个带有我写的任何评论的帖子,但没有嵌入到
http://www.example.com
的链接。
href: response
吗? - isherwoodvar url ='http://www.google.com';
,它是否有效? 如果是,则可能response
变量是一个对象而不是字符串。 - Tasos K.