2012-03-08 14 views
0

FBクレジットを実装するにはofficial tutorialに従っていますが、機能していません。Facebookクレジットの実装で何が問題になっています

アラートメッセージを追加して、コードが実行されていることを確認しました。アラートメッセージから、jsエラーがなく、FB.uiが呼び出されていると確信しています。コールバック関数にも警告メッセージが表示されますが、応答は受信されません。

私はコードで何が間違っているかを理解するために5時間以来私の頭を壊しています。ある人が私を助けてくれますか?アプリの

追加情報:

  • 公表されていないキャンバスアプリ
  • (サンドボックスモードが有効になって)
  • 会社を登録していません。 FBは私が後でそれをすることができると言いますので、私は国を設定しました。私はFBは文句を言わない(インターフェイスから)それを変更することができますので、私は与える必要がある上、銀行口座の詳細結論を出す必要があるので、私はここで

Tool tip says, I can do it later as it is only mandatory for payments

を登録していないbuy.phpですあなたは警告の呼び出しに気づいた場合

<?php 
include_once '/Config.php'; 
include_once '/fb-sdk/facebook.php'; 
?> 
<html> 
    <head> 
     <title>My Facebook Credits Page</title> 
    </head> 
    <body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
    appId : '<?php echo Config::$appId?>', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelUrl : 'http://localhost/buy.php', // channel.html file 
    oauth : true // enable OAuth 2.0 
    }); 

var callback = function(data) { 
    if (data['order_id']) { 
     alert('called back'); 
     return true; 
    } else { 
     //handle errors here 
     alert('some error'); 
     return false; 
    } 
    }; 

function placeOrder(){ 

    alert('in placeOrder()'); 

    var order_info = 'myorderinfo'; 
    alert('creating obj'); 

    var obj = { 
      method: 'pay', 
      order_info: order_info, 
      action: 'buy_item', 
      dev_purchase_params: {'oscif': true} 
      }; 
    alert('calling ui'); 
    FB.ui(obj, callback); 

} 

</script> 

<input type="button" value="post" onclick="postFeed()" /> 
<input type="button" value="Buy" onclick="placeOrder()" /> 
</body> 
</html> 

、私は順番

    に警告メッセージを取得しています'placeOrderで()'
  1. が警告メッセージがあまりにもコールバック関数であるが、それらが

    と呼ばれていない

'FB.ui呼び出し' を 'OBJを作成します'これは、罰金とPO取り組んでいる

function postFeed(){ 
    alert('in postFeed()'); 
    FB.ui(
       { 
       method: 'feed', 
       name: 'Facebook Dialogs', 
       link: 'https://developers.facebook.com/docs/reference/dialogs/', 
       picture: 'http://fbrell.com/f8.jpg', 
       caption: 'Reference Documentation', 
       description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 
       }, 
       function(response) { 
       if (response && response.post_id) { 
        alert('Post was published.'); 
       } else { 
        alert('Post was not published.'); 
       } 
       } 
      ); 
} 

fbは「postFeedback」のクリックイベントから適切に私が実装したフィードポスト機能をinitedと呼ばれていることを確認してください私もhttps://developers.facebook.com/docs/authentication/signed_request/

で与えられた例を使用してcallback.phpを実装している

私の壁に刺さフィードは、はい、私は、アプリの設定を適切

callback.php

<?php 

include_once 'Config.php'; 

mysql_connect('localhost','root',''); 
mysql_select_db("precious_world"); 

//var_dump($_REQUEST); 
//dump the request into the db 
$request = join(':', $_REQUEST); 
$request = mysql_real_escape_string($request); 
$query = "insert into fbcredits_callback(data)values('$request')"; 
$result = mysql_query($query); 

$fb_signed_req = $_REQUEST['signed_request']; 

echo parse_signed_request($signed_request, Config::$appSecret); 

function parse_signed_request($signed_request, $secret) { 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data 
    $sig = base64_url_decode($encoded_sig); 
    $data = json_decode(base64_url_decode($payload), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
    error_log('Unknown algorithm. Expected HMAC-SHA256'); 
    return null; 
    } 

    // check sig 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
    error_log('Bad Signed JSON signature!'); 
    return null; 
    } 

    return $data; 
} 

function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

?> 
を設定しています

このファイルには、リクエスト全体をダンプしてリクエストをトレースするためのコードがあります

答えて

1

「localhost」が表示されていますあなたのチャンネルのURLのいずれかが、あなたはまた、あなたのクレジットコールバックURLとしてlocalhostを使用している場合、Facebookはそれに達することができるようになります(したがって、続行するクレジット順序のための方法はありません)方法はありません

+0

aaaaaw私が得ましたprodでホストするそれのためにタイ。私は –

+0

を確認しますので、注文のことを確認するために私はライブURLを言及する必要がありますか?他の方法はありませんか? – Volatil3

+0

他のURLは使用できませんが、Facebookサーバーからアクセスできる必要があります。 – Gabriel

関連する問題