如何在没有 SDK 或自定义应用程序 ID 的情况下创建 Facebook 分享按钮?

Posted

技术标签:

【中文标题】如何在没有 SDK 或自定义应用程序 ID 的情况下创建 Facebook 分享按钮?【英文标题】:How create a Facebook share button without SDK or custom app id? 【发布时间】:2014-10-24 11:48:11 【问题描述】:

我在看latest update to Facebook's share button. 如果不包含 Facebook javascript SDK 或在某处为您提供应用程序 ID 的 Facebook 应用程序,似乎不再可能在网站中包含共享按钮?

分享按钮示例 1 使用 Facebook SDK

FB.ui(
  method: 'share',
  href: 'https://developers.facebook.com/docs/',
, function(response));

分享按钮示例 2 使用自定义应用 ID

https://www.facebook.com/dialog/share?
  app_id=145634995501895
  &display=popup
  &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F
  &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer

问题:如何用一行代码为 Facebook 构建一个简单明了的分享按钮,不需要库和应用程序 ID?

【问题讨论】:

不可能。你为什么要这样做? 一个客户的网站需要一个非常简单的“将这个页面分享到 facebook”按钮,但我不想为了创建一个按钮而创建一个“空”应用程序。特别是因为应用程序必须是公开的。拥有一个公开的空脸书应用程序有什么意义?只是为了让你有一个身份证? 是的。所以我们知道谁是幕后黑手 但是如果人们不小心通过我的 Facebook 页面偶然发现了我空的但公开的应用程序怎么办?这没有意义吧?此外,如果客户需要一个分享按钮,为什么必须将它与我的个人 Facebook 应用程序相关联?我应该要求客户创建自己的应用程序吗? 有可能。创建一个简单的弹出窗口并使用 Facebook 共享对话框。 developers.facebook.com/docs/sharing/reference/share-dialog 无需 FB 应用即可简单分享 URL window.open("facebook.com/sharer/sharer.php?u=http://www.domain.com", "pop", "width=600, height=400, scrollbars=no"); 【参考方案1】:

您可以使用 facebook 分享链接和一个简单的弹出窗口来完成这项工作

$("#facebookShareLink").on("click",function()
    var fbpopup = window.open("https://www.facebook.com/sharer/sharer.php?u=http://***.com", "pop", "width=600, height=400, scrollbars=no");
    return false;
);

【讨论】:

谢谢。我认为这种方法已被弃用,但显然,Facebook 再次允许它:joshuawinn.com/facebooks-sharer-php-longer-deprecated-2014 非常感谢。几个小时以来一直试图找到一个简单的东西!很高兴它在 16 年仍然有效 :) 它在 2017 年 6 月 19 日仍然有效。但实际上,我仍然担心它将来可能会被弃用。 :( 我可以使用这个例子,但我要补充一点,没有理由进行变量赋值并将其放入准备好的文档中。包括一个 JQuery 库,这就是我的代码的样子:$(function() $("#facebookShareLink").click(function() window.open("https://www.facebook.com/sharer/sharer.php?u=http://***.com", "pop", "width=600, height=400, scrollbars=no"); return false; ); ); 这种方式分享的内容非常静态,只为我显示站点标题,反正我可以更改文字,可能添加图片?【参考方案2】:

这是可能的。无需 FB 应用程序即可简单共享 URL。创建一个简单的弹出窗口并使用 Facebook 分享对话框。

https://developers.facebook.com/docs/sharing/reference/share-dialog 到目前为止,这仍然包含在他们的 API 中。

window.open("https://www.facebook.com/sharer/sharer.php?u=http://www.gmanetwork.com/news/", "pop", "width=600, height=400, scrollbars=no");

【讨论】:

查看 2018 年 6 月 15 日的链接,所有示例都表明它想要一个 appid。分享网址似乎仍然有效【参考方案3】:

创建每次都将弹出窗口居中的函数。

function openURLInPopup(url, width, height, name) 
    if (typeof(width) == "undefined") 
        width = 800;
        height = 600;
    
    if (typeof(height) == "undefined") 
        height = 600;
    
    popup(url, name || 'window' + Math.floor(Math.random() * 10000 + 1), width, height, 'menubar=0,location=0,toolbar=0,status=0,scrollbars=1');

那么你的链接应该是这样的 对于推特:

 <a class="btn_twitter" onclick="openURLInPopup('http://twitter.com/home?status=http://www.domain.ro/url.html',600, 400); return false;" href="#" target="_blank">Twitter</a>

对于脸书:

<a class="btn_fb" onclick="openURLInPopup('http://www.facebook.com/sharer.php?u=http://www.domain.ro/url.html',600, 400); return false;" href="#" target="_blank">Facebook</a>

对于谷歌

<a class="btn_gplus" onclick="openURLInPopup('https://plus.google.com/share?url=http://www.domain.ro/url.html',600, 400); return false;" href="#">gplus</a>

【讨论】:

没用,不包括“弹出”功能。 @Wesley 不难猜到“弹出”功能会是什么样子。事实上,他本可以使用类似var newwindow=window.open(url, name || 'window' + Math.floor(Math.random() * 10000 + 1), 'width='+width+', height='+height); if (window.focus) newwindow.focus();【参考方案4】:

如果您想添加自己的(可能是动态的)文本,可以在链接中添加引号参数:

https://www.facebook.com/share.php?u=example.com&quote=YOUR+TEXT+HERE

【讨论】:

以上是关于如何在没有 SDK 或自定义应用程序 ID 的情况下创建 Facebook 分享按钮?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery-UI 在没有 CSS 或自定义的情况下无法在我的用户脚本中工作?

广告 SDK 在没有应用程序 ID 的情况下初始化

如何在字幕文件中加载外部或自定义字体

如何通过employeeNumber或自定义属性搜索keycloak用户?

使用 CURL 进行 Stripe Express 或自定义入职

在 Spring 中管理或自定义用户会话 管理 JavaSE 应用程序