是否可以生成一个';在Facebook上分享';在Android/iOS/mobile上打开本机Facebook应用程序而不是web共享对话框的链接?

是否可以生成一个';在Facebook上分享';在Android/iOS/mobile上打开本机Facebook应用程序而不是web共享对话框的链接?,android,ios,facebook,mobile,Android,Ios,Facebook,Mobile,在本机应用程序中打开共享对话框的网站上,是否可以在Facebook链接上共享 当前行为: 现在点击Facebook共享链接打开基于web的共享对话框,这是不好的,因为大多数移动Facebook用户都使用本机应用程序,因此没有登录到他们的浏览器。因此,web共享对话框会提示他们输入用户凭据,这可能导致他们最终无法共享 理想行为: 单击Facebook上的共享链接将在原生Facebook应用程序中打开共享对话框,用户已在其中登录 提前感谢您的帮助 到目前为止,还没有官方的方法来实现这一点。它可以通过

在本机应用程序中打开共享对话框的网站上,是否可以在Facebook链接上共享

当前行为:

现在点击Facebook共享链接打开基于web的共享对话框,这是不好的,因为大多数移动Facebook用户都使用本机应用程序,因此没有登录到他们的浏览器。因此,web共享对话框会提示他们输入用户凭据,这可能导致他们最终无法共享

理想行为:

单击Facebook上的共享链接将在原生Facebook应用程序中打开共享对话框,用户已在其中登录


提前感谢您的帮助

到目前为止,还没有官方的方法来实现这一点。它可以通过Facebook实现,使用他们的自定义URL方案转发他们的web共享对话框。因此,如果使用打开此对话框,您将在该功能可用时立即获得该功能,而无需进一步更改

在没有任何先决条件的情况下,使用官方web共享对话框最简单的方法是链接到此URL:

https://www.facebook.com/dialog/share?
    app_id=145634995501895
    &display=popup
    &href=URL_TO_SHARE
    &redirect_uri=RETURN_URL
将URL_替换为_共享,并使用正确的URL编码值返回_URL。或者您包括Facebook JS-SDK,并使用经典共享按钮或中描述的其他方式

完整性:在iOS和Android上的本机应用程序中,如果用户安装了Facebook应用程序,则可以直接链接到Facebook应用程序。请参阅从或共享。由于情况并非总是如此,您必须使用各自平台的特定Facebook SDK进行检查,并返回到基于web的对话框


顺便说一句:我强烈建议您不要使用Facebook应用程序注册的未经正式记录的URL方案。如果从安装了Facebook应用程序的设备访问网站,它们可能会起作用,但在没有安装Facebook应用程序的设备上,尤其是任何PC或Mac上,它们会变成死链接或奇怪的浏览器警告。即使你检查了所有这些情况,Facebook也可能会在任何时候再次这样做,破坏你的链接,或者——可能更糟——导致未定义的行为。

我知道这已经有几年了,但对谁来说,这可能是个问题:
看看这个答案

让我把答案也抄过来:

Swift

let shareText = "Hello, world!"
if let image = UIImage(named: "myImage") {
    let vc = UIActivityViewController(activityItems: [shareText, image], applicationActivities: [])
    presentViewController(vc, animated: true, completion: nil)
}
尝试教程链接

你可以试试这个,让用户决定在分享你的链接时使用什么本机应用

它打开用户设备的本机共享

const data = {
  title: document.title,
  text: 'Hello World',
  url: 'https://your_site_url',
}

const shareVia = window.navigator.share(data);

分享我!

以下代码将检查应用程序是否已安装,如果已安装,您可以使用该应用程序进行共享,您不必在web浏览器中打开Facebook并再次登录。如果未安装该应用程序,它将只使用Facebook sharer链接,然后用户必须在浏览器中登录Facebook,如果未登录,该链接将被共享

  onShare() {
    console.log(order);
    const title = 'Title';
    const url = 'https://www.facebook.com/';
    const text = "Share on native app if installed";
    if (navigator.share) {
      navigator
        .share({ title: `${title}`, url: `${url}`,text: `${text}`})
        .then(() => {
          console.log('Thanks for sharing!');
        })
        .catch(console.error);
    } else {
      window.location.replace(
        `https://www.facebook.com/sharer.php?u=${url.trim()}&quote=${text}`
      );
    }
  } //onShare ends here

你是说当你在移动设备上点击网页上的共享按钮时?我认为Facebook JavaScript SDK通常都是这样,它不使用该应用程序。如果您使用的是已安装的应用程序,那么您可以使用Android或iOS SDK与FB应用程序共享。我怀疑网页是否可能与这样的应用程序交互。这似乎是PhoneGap的推动力。混合web应用程序可以或多或少地复制网站,但可以访问本机应用程序。@Walker您找到任何解决方案了吗?您好,答案是从2014年开始的,但2017年是否有任何东西可以从web打开本机应用程序以共享某些内容?我面临着同样的问题,无法找到任何相关内容:(大家好,因为它的答案是2014年的,但2017年有什么东西可以让我们从网络上打开本机应用程序来分享一些东西吗?这是一个痛苦的人……安卓系统有5行代码,为什么在iOS上这么难?@VishalThoriya True,这个答案已经三年了。但是对于OP的问题(通过网站上的本机应用程序分享)我很抱歉。)它仍然是最新的。@Endran你是说从本机应用程序共享吗?因为OP的问题不是关于这一点。不过,我也包含了相关文档的链接。我仍然不理解你的评论,因为从iOS上的本机应用程序共享也不需要太多的5行代码。事实上,你自己的答案需要使用UIActivityViewController只恢复了4行。我在寻找类似问题的答案时偶然发现了这个问题。我对这个问题感到恼火,所以我对Vishals 2017的评论发表了评论。幸运的是,我在我发布的答案中找到了这篇帖子,适合像我这样也会偶然发现这篇帖子的人。我并没有试图抹黑你2014年的答案.Hi mon,如果可能,请在回答时包括链接中的相关详细信息/报价/代码,而不仅仅是链接本身,以防将来该页面不再可用
  onShare() {
    console.log(order);
    const title = 'Title';
    const url = 'https://www.facebook.com/';
    const text = "Share on native app if installed";
    if (navigator.share) {
      navigator
        .share({ title: `${title}`, url: `${url}`,text: `${text}`})
        .then(() => {
          console.log('Thanks for sharing!');
        })
        .catch(console.error);
    } else {
      window.location.replace(
        `https://www.facebook.com/sharer.php?u=${url.trim()}&quote=${text}`
      );
    }
  } //onShare ends here