Facebook画布应用程序 - 邀请朋友

5
我正在编写一个Facebook iframe/canvas应用,并希望让用户有能力邀请朋友安装此应用程序。目前,我正在使用Facebook的PHP-SDK来登录用户并与Facebook进行所有交互。关于实现邀请好友对话框的唯一信息是关于FBML的,但FBML已经过时了;或者是使用请求对话框:https://developers.facebook.com/docs/reference/dialogs/requests/。后者似乎需要使用Facebook的Javascript SDK,该SDK具有自己的登录方法。
JS SDK是否是我的唯一选择?如果是,我如何在不强制用户重新登录的情况下使用它?
3个回答

3

第一种方法:

function newInvite(){
                 var receiverUserIds = FB.ui({
                        method : 'apprequests',
                        message: 'Come on man checkout my applications.',
                 },
                 function(receiverUserIds) {
                          console.log("IDS : " + receiverUserIds.request_ids);
                        }
                 );
                 //http://developers.facebook.com/docs/reference/dialogs/requests/
            }

第二种方法:

<?php
     include_once "fbmain.php";
    if (isset($_REQUEST['ids'])){
        echo "Invitation Successfully Sent";
        echo '<pre>';
        print_r($_REQUEST);
        echo '</pre>';
        echo "<b>If you need to save these user ids then save these to database <br />then redirect user to the apps.facebook.com/yourapp url</b>";
        $string = "<script type='text/javascript'>top.location.href='{$fbconfig['appBaseUrl']}'; </script>";
        echo "Use the following javascript code to redirect user <br />";
        echo htmlentities($string, ENT_QUOTES);
    }
    else {
?>
<fb:serverFbml style="width: 500px;">
    <script type="text/fbml">
      <fb:fbml>
          <fb:request-form
                    action="<?=$fbconfig['baseUrl']?>/invite.php"
                    target="_top"
                    method="POST"
                    invite="true"
                    type="Demo Application  Learning API"
                    content="Checkout this demo application and learn iframe base facebook application development. <fb:req-choice url='<?=$fbconfig['appBaseUrl']?>' label='Accept' />"
                    >

                    <fb:multi-friend-selector
                    showborder="false"
                    actiontext="Checkout this demo application">
        </fb:request-form>
      </fb:fbml>
    </script>
  </fb:serverFbml>
<?php } ?>

third approach(using PHP-SDK):

     $app_id = "YOUR_APP_ID";

     $canvas_page = "YOUR_CANVAS_PAGE_URL";

     $message = "Would you like to join me in this great app?";

     $requests_url = "http://www.facebook.com/dialog/apprequests?app_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page)
            . "&message=" . $message;

     if (empty($_REQUEST["request_ids"])) {
        echo("<script> top.location.href='" . $requests_url . "'</script>");
     } else {
        echo "Request Ids: ";
        print_r($_REQUEST["request_ids"]);
     }
?>


1
是的,目前FB JS请求对话框是唯一的方法。你的用户不需要使用你的应用进行身份验证 - 实际上他们根本不需要进行身份验证。我有一个可以查看代码的jsfiddle示例,但你只需要指定你的应用程序ID即可。

1
嗨BK,我测试了你的jsfiddle页面,但它似乎不再起作用:Chrome会抛出一个JavaScript错误:未捕获的引用错误:FB未定义 IE9 / FF:打开,但在FB页面上显示“发生错误。请稍后再试。” - JStark

0

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