使用Facebook Javascript API发送消息

5
我已经把这个包含在我的页面HTML中了:

<div id="fb-root"></div>
<script type="text/javascript" language="javascript">
    (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>

我已经在我的页面上放置了类似于Facebook的框,但是现在我需要使用Facebook Javascript API发送电子邮件消息。这个配置是否足够用来调用“发送消息”?

我有一个自定义的HTML表单,在其中当我点击发送时,我希望它代表我的Facebook页面发送一条消息。我在Facebook上有自己的页面。

  • 我需要发送消息而不需要任何服务器端组件(纯Javascript)
  • 我有一个现有的Facebook页面(将用于发送消息)
  • 我有一个自定义表单,将用于输入消息。
  • 消息将被发送到某个特定的电子邮件地址
  • 我可以用Facebook发送到任何邮件,所以我认为这会起作用

这是我为一个提供此服务的Chrome扩展制作的要点:https://gist.github.com/VehpuS/916bdb9cc5ce287cf29c8708d79380a6我想稍加改进后,这可能成为这个问题的适当解决方案(即不是专门为Chrome扩展量身定制的解决方案)。 - Moshe Jonathan Gordon Radian
3个回答

4
我会分别回答你的问题:
1. 我需要使用纯JavaScript发送消息,不涉及任何服务器端组件。
如果要向Facebook用户发送简单信息,则必须使用FB.ui发送对话框:https://developers.facebook.com/docs/reference/dialogs/send/。这几乎是您唯一的选择,您可以尝试在弹出窗口中输入电子邮件地址。根据文档,它应该有效。
2. 我有一个自定义表单,用于输入消息。
即使是发送对话框也无法再起作用了。您无法预填消息参数,您想要的只能通过Facebook的PHP SDK实现。但是,如果Facebook已经在对话框中提供了一切,为什么还要自己编写文本字段呢?
没有该对话框,就没有办法在不使用像PHP这样的服务器端语言的情况下后台发送消息。

FB.ui发送对话框看起来是一个不错的解决方案,但需要页面的观看者使用他/她的Facebook账户登录。 - quarks
当然,用户需要登录,但他不必授权应用程序。如果用户没有登录,Facebook将打开一个登录对话框,无需任何进一步的必要代码。 - andyrandy

0
使用这个:这里是源代码 Facebook 发送消息
<html xmlns:fb="https://www.facebook.com/2008/fbml">
  <body>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <div id="fb-root"></div>
    <script>
      // assume we are already logged in
      FB.init({appId: '123050457758183', xfbml: true, cookie: true});

      FB.ui({
          method: 'send',
          name: 'People Argue Just to Win',
          link: 'http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html',
          });
     </script>
  </body>
</html>

谢谢您提供这个,不过我忘了说明,我想在没有弹出式登录之类的情况下完成这个操作...通过授权密钥或其他方式代表用户发送... - quarks
你的意思是即使你没有登录 Facebook,但你在自己的网站上登录了,你仍然可以发送消息,是这个意思吗? - Lian
1
请勿使用同步方式来包含JavaScript SDK,始终使用Facebook推荐的异步方式。 - andyrandy

0

补充以上答案。你可能想要创建一个函数。

<div class="facebook-invite">
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <div id="fb-root">
        <a href="#" onclick="FBInvite()">Invite Facebook Friends</a>
    </div>
    <script>

      FB.init({appId: 'XXXXXXXX', xfbml: true, cookie: true});
        function FBInvite(){

      FB.ui({
          method: 'send',
          name: 'Join This website it is cool',
          link: 'rishabhjainiitbhu.ac.in',
          });
         }
     </script>
</div>

这将创建一个链接,点击它将弹出对话框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接