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.me
とFB.ui
関数を呼び出す必要があります。これは正しいです?上記のPHPにはすでにこのデータの一部が含まれているという印象を受けますが、これらの関数を呼び出すには、本当にJavascriptに再接続する必要がありますか?これを行うと、response.id
または他のユーザーデータが「未定義」になるだけです。
一般的に、私は知りたいだけです-キャンバスで実行されているFacebookアプリで基本的なAPI呼び出しを使用するにはどうすればよいですか?
支払いチュートリアルはすべてJSにありますが、アプリはPHPでリダイレクトされるキャンバスにある必要があります。
編集
私はそれを明確にすべきだった。FB.me(...)
他の関数と同様に未定義を返しFB.
ます。JSは標準であり、チュートリアルコードからコピーして貼り付け、sdkの非同期読み込み、ラッピングFB.init()
、その他の関数をで実行しwindow.fbAsyncInit
ます。何らかの理由で、キャンバス内にいると、標準のJSSDKが機能しなくなるようです。