2011-12-15 9 views
1

私は、アプリのリクエストのための友達セレクタダイアログを適切に実装する方法を理解しようとしています。問題PHPのSDKを使用してFacebook Friends Selectorダイアログを実装する

私が目指しているのは、ユーザーが自分の競技アプリに入ったら、勝つことができない場合、5人の友人にリクエストを送信することを選ぶことができます。

少なくとも5人の友達を選択することは可能ですかどうかはわかりませんが、入力できるかどうかを制御するロジックはデータベースに保存されているデータによって制御されます。再入力できるようにdbを更新してください。

私はこの質問にコードを追っ:

How to display the friends selector dialog with PHP sdk for Facebook?

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => 'XXXXXXXXX', 
    'secret' => 'XXXXXXXXXXXXXXXXXX', 
)); 

$user = $facebook->getUser(); 

$url = 'https://www.facebook.com/dialog/'; 
$url .= 'apprequests?app_id=XXXXXXXXXX&redirect_uri=http://www.domain.com/'; 
$url .= '&message=Share%20with%205%20friends%20for%20another%20chance%20to%20win!&display=popup'; 
?> 
<a href="<?php echo $url; ?>">Recommend friends for another chance to win!</a> 

<?php 

echo $_GET['request_ids']; 

if (isset($_GET['request_ids'])) { 
    for ($i=0; $i<count(request_ids); $i++){ 
     $link = ($link + "&to=" + $request_ids[$i]); 
    } 
    echo "<script language=javascript>parent.location=''</script>"; 
} 

を私が午前の問題は、私がリンクをクリックすると、Facebookのロゴは、その後「facebook.comに行く」で表示されていることです下に。これをクリックすると、ダイアログがフルページで開きます。

キャンセルをクリックすると自分のドメインに移動しますが、タブにリダイレクトできませんか?

同様に、アプリのリクエストダイアログを完了すると、タブにリダイレクトされたときに自分のホームページにリダイレクトされます。

困ったことに頭を下げて助けていただければ幸いです。

要約すると、Facebookのロゴが突然表示されてから、ページのダイアログが開かれるのではなく、ダイアログがポップアップで開かれるようにしたいと思います。

次に、ユーザーが「キャンセル」をクリックしてダイアログを閉じるだけで、要求が完了した場合は、ダイアログを閉じるために、ダイアログの代わりにタブを残してフルページにし、自分のドメインにリダイレクトします。

ありがとうございました。

答えて

1

Facebook JS-SDKを使用すると、あなたが求めている最高の体験が得られます。それはオプションだ場合、あなたが使用する必要があり、(それがない理由を考えることはできません)Requests Dialog

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:fb="https://www.facebook.com/2008/fbml"> 
    <head> 
    <title>Request Tester C</title> 
    </head> 

    <body> 
    <div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <p> 
     <input type="button" 
     onclick="sendRequestToRecipients(); return false;" 
     value="Send Request to Users Directly" 
     /> 
     <input type="text" value="User ID" name="user_ids" /> 
     </p> 
    <p> 
    <input type="button" 
     onclick="sendRequestViaMultiFriendSelector(); return false;" 
     value="Send Request to Many Users with MFS" 
    /> 
    </p> 

    <script> 
     FB.init({ 
     appId : 'YOUR_APP_ID', 
     status : true, 
     cookie : true, 
     oauth: true 
     }); 

     function sendRequestToRecipients() { 
     var user_ids = document.getElementsByName("user_ids")[0].value; 
     FB.ui({method: 'apprequests', 
      message: 'My Great Request', 
      to: user_ids, 
     }, requestCallback); 
     } 

     function sendRequestViaMultiFriendSelector() { 
     FB.ui({method: 'apprequests', 
      message: 'My Great Request' 
     }, requestCallback); 
     } 

     function requestCallback(response) { 
     // Handle callback here 
     } 
    </script> 
    </body> 
</html> 

もドキュメントでも、私のチュートリアルで説明されて送信されたリクエストを処理する方法。以下の(私はjQueryのを使用しています)新しい要求の形式でコールバックを処理する例を示します。

function sendRequest() { 
    FB.ui({ 
     method: 'apprequests', 
     message: 'I want to give you this flower!', 
     title: 'Give a flower to some of your friends', 
     data: '{"item_id":1254,"item_type":"plant"}' 
    }, 
    function (response) { 
     if (response.request && response.to) { 
      var request_ids = []; 
      for(i=0; i<response.to.length; i++) { 
       var temp = response.request + '_' + response.to[i]; 
       request_ids.push(temp); 
      } 
      var requests = request_ids.join(','); 
      $.post('handle_requests.php',{uid: <?php echo $user; ?>, request_ids: requests},function(resp) { 
       // callback after storing the requests 
      }); 
     } else { 
      alert('canceled'); 
     } 
    }); 
    return false; 
} 

UPDATE:友人の要件の「最小」#について。 JS-SDKダイアログにはmax_recipientsというプロパティがありますが、最小値はありませんので、独自のフレンドセレクタが必要です。toプロパティをそれらのフレンドのIDに設定してください。

+0

ありがとうイブラヒム、大変感謝しています。私は最終的にJS SDKを使用して作業し、選択された各友達の壁に投稿するコードを追加しました。 (ここにあなたの他の答えの一つから得た)。今ほとんどアプリで終わっていますが、周りにいるとすぐにもう一度あなたの助けが必要になるかもしれません! – martincarlin87

+0

@ martincarlin87、あなたは大歓迎です。 – ifaour

関連する問題