PHPを使用してFacebook SDKからサイトのデータベースにユーザー情報を取得する方法
-
20-12-2019 - |
質問
Facebook の Java スクリプト SDK を使用して、サイトで Facebook ログインを有効にしました。次に、Facebook からユーザーの基本情報を取得し、サイトの MySQL データベースに保存したいと思います。代替サインアップページはphpで実装されているため、これをphp経由で行う必要があります。他のより良い方法が可能であれば、ぜひ言及してください。
編集:応答オブジェクトを使用する必要があることはわかりましたが、オブジェクト要求はどこに配置すればよいでしょうか?そしてPHPの「ポスト」コードは?私は PHP については比較的初心者ですが、以下のコード行はどこに属しますか?
FB.api('/me', function(response) {
console.log(JSON.stringify(response));
});
値の配列を返します。
{"id": "101540562372987329832845483"、 "email": "emple@example.com"、 "first_name": "bob"、[...]}
編集2:
FB.api は API を呼び出して、ユーザー情報を含む応答オブジェクトを受け取りますが、以下の正確な「code1」を使用する必要がありますか、それとも私が使い慣れている「code2」のように他の方法を使用できますか?
コード1:
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
var fbname=response.name;
var fbid=response.id;
$.ajax({
type: "POST",
url: page_for_storing_information,
data: "name="+fbname+"&uid="+fbid,
success: function(msg){
}
});
console.log('Good to see you, ' + response.name + '.');
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
コード2:
$name = mysqli_real_escape_string($con, $_POST['response.name']);
$email = mysqli_real_escape_string($con, $_POST['response.email']);
$id = mysqli_real_escape_string($con, $_POST['response.id']);
$sql="INSERT INTO questbook (name, email, id)
VALUES ('$name', '$email', '$comment', )";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
解決
Facebook は、API に新しい PHP SDK 4 を使用することを推奨しています。PHP 5.4 以降が必要です。サーバーにそれがインストールされていることを確認してください。開始するためのリンクをいくつか示します。Facebook のドキュメントには、新しい PHP SDK について (まだ) あまり詳しく記載されていません。
- https://developers.facebook.com/docs/php/gettingstarted/4.0.0
- http://www.devils-heaven.com/facebook-php-sdk-4-0-tutorial/
使用するとよいのは「JavaScript ログイン ヘルパー」です。
編集:基本データは JavaScript 経由でリクエストするので、これには PHP SDK を使用する必要さえありません。したがって、必要なのは、AJAX を使用して、データベース ストレージ コードを含む php ファイルを呼び出すことだけです。
AJAX コードの例:
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState === 4) {
console.log(ajaxRequest.responseText);
}
};
//send with POST
ajaxRequest.open('POST','yourscript.php',true);
ajaxRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //like a form
ajaxRequest.send('name=xxxx&fbid=xxxxx');
MySQL の使用方法を知っているかどうかはわかりませんが、Google で「PDO」を検索してください。PHP で MySQL を使用する推奨方法です。 http://php.net/manual/en/book.pdo.php
他のヒント
これを通過してください - https://developers.facebook.com/docs/reference/php/4.0.0
ここにすべてが説明されています。