0

Facebookログインで簡単な支払いで仮想商品を購入できるサイトを作りたい。

私の理解では、Facebookの支払いシステム(ポップアップなど)は、Canvasアプリまたはモバイルでのみ機能します。そこで、app.facebook.com / ###に必要なページが含まれるように、アプリの名前空間とキャンバスページのURLを設定しました。

ユーザーがログインしてアプリに基本的な権限を付与していることを確認するには、次のようにします。

<?php 

 $app_id = "###";

 $canvas_page = "http://apps.facebook.com/###";

 $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page);

 $signed_request = $_REQUEST["signed_request"];

 list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

 $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

 if (empty($data["user_id"])) {
        echo("<script> top.location.href='" . $auth_url . "'</script>");
 }
 else {
    echo $data["user_id"];
 }

?>

ページの本文にあります。明らかに、一部のユーザーデータは$dataオブジェクトで利用できます。

ただし、支払いボタンが必要になったので、JSSDKを使用してを呼び出す必要がありますFB.ui(...)。さらに簡単に言うと、アクセスFB.me(...)するには、JS SDKを通過して非同期でロードし、FB.init(...)ログインステータスを確認して、FB.meFB.ui関数を呼び出す必要があります。これは正しいです?上記のPHPにはすでにこのデータの一部が含まれているという印象を受けますが、これらの関数を呼び出すには、本当にJavascriptに再接続する必要がありますか?これを行うと、response.idまたは他のユーザーデータが「未定義」になるだけです。

一般的に、私は知りたいだけです-キャンバスで実行されているFacebookアプリで基本的なAPI呼び出しを使用するにはどうすればよいですか?

支払いチュートリアルはすべてJSにありますが、アプリはPHPでリダイレクトされるキャンバスにある必要があります。

編集

私はそれを明確にすべきだった。FB.me(...)他の関数と同様に未定義を返しFB.ます。JSは標準であり、チュートリアルコードからコピーして貼り付け、sdkの非同期読み込み、ラッピングFB.init()、その他の関数をで実行しwindow.fbAsyncInitます。何らかの理由で、キャンバス内にいると、標準のJSSDKが機能しなくなるようです。

4

1 に答える 1

1

PHP SDKを使用しているからといって、javascript SDKを使用すべきではないという意味ではありません。実際には、JavaScript SDKは一緒に使用するように構築されており、クライアント側とサーバー側の接続が改善されています。

私はjavascriptSDKを使用して、ユーザーステータス(ログに記録されている、アプリが承認されているなど)を処理し、ユーザーがFacebookのプラグインとそれぞれの応答を操作するダイアログと対話を処理し、ユーザーのアクションによって発生するイベントを処理します。

サーバー側では、PHP SDKを使用してFacebookにクエリを実行したり、ユーザーに関する情報を取得したりします。また、サーバー側でも常にユーザーを検証します。

于 2013-03-27T15:24:36.587 に答える