ver.1サポートサイト

facebookの情報を取得

最終更新日:2020年11月20日

<?php // <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=TEST --> ?>
<?php
// 使い方
// https://xxx.smp.ne.jp/regist/is?SMPFORM=xxxx  でアクセスすると通常のフォーム
// https://xxx.smp.ne.jp/regist/is?SMPFORM=xxxx&fb=1 でアクセスするとfacebookから情報を参照する
$fbOn = $SPIRAL->getParam("fb"); //フォームのfbの値を取得します
$me = array(); //フォームの初期値を格納する
$fburl= $_SERVER['REQUEST_URI'] . "&fb=1"; //facebook参照用のURLを作成
if ($fbOn) {
$args = array(
'appId' => "xxxxxxxxxxxxxxxxxxxxxxx", //facebookのappId
'secret' => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", //facebookのシークレット
'cookie' => true,
);
$facebook = $SPIRAL->getFacebook($args);
$userId = $facebook->getUser();
// アプリケーション登録済ユーザーであればユーザー情報を取得できます
// アプリケーション未登録ユーザーであればfacebookのアプリ登録画面へ誘導します
if ($userId) {
$url = $facebook->getLoginUrl(array(
'scope' => 'email,user_birthday',
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => ''
));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
exit;
}
// facebookのログインユーザの情報を取得します
try {
$fql = "SELECT uid, email, name, first_name, last_name, birthday_date, sex, pic_square FROM user WHERE uid = me()";
$response = $facebook->api( array('method' => 'fql.query','query' =>$fql) );
$me = $response[0];
} catch (FacebookApiException $e) {
$error = "Error : something is wrong, please try again later.";
exit;
}
}
// メールアドレスの初期値を作成(フォームの値が存在すれば上書きします)
if ($SPIRAL->getParam("f000024429")) {
$me['email'] = $SPIRAL->getParam("f000024429");
}
// 名前の初期値を作成(フォームの値が存在すれば上書きします)
if ($SPIRAL->getParam("f000024430")) {
$me['name'] = $SPIRAL->getParam("f000024430");
}
// 生年月日の初期値を作成(フォームの値が存在すれば上書きします)
$ymd = explode("/", $me['birthday_date']);
$me['birth_m'] = $ymd[0];
$me['birth_d'] = $ymd[1];
$me['birth_y'] = $ymd[2];
if ($SPIRAL->getParam("f000024763:y")) {
$me['birth_y'] = $SPIRAL->getParam("f000024763:y");
}
if ($SPIRAL->getParam("f000024763:m")) {
$me['birth_m'] = $SPIRAL->getParam("f000024763:m");
}
if ($SPIRAL->getParam("f000024763:d")) {
$me['birth_d'] = $SPIRAL->getParam("f000024763:d");
}
// 性別の初期値を作成(フォームの値が存在すれば上書きします)
$gender = $SPIRAL->getParam("f000024762");
if ($gender == "女性" || $me['sex'] == "female") {
$me['gender_m'] = "";
$me['gender_f'] = "selected";
} else if ($gender == "男性" || $me['sex'] == "male") {
$me['gender_m'] = "selected";
$me['gender_f'] = "";
} else {
$me['gender_m'] = "";
$me['gender_f'] = "";
}
?>
<!-- ここから通常のカスタムページのソースコード。$me の部分に注目してください。 -->
<!-- フィールドコード部分のみ書いています -->
<html>
<body>
facebookを利用する場合はこちら。<a href="<?=$fburl?>">こちら</a>
<table>
<tr>
<td class="title">メールアドレス <span class="need">[必須]</span></td>
<td class="data">
<input type="text" name="f000024429" value="<?=$me['email']?>" size="60" maxlength="129"><br>
<input type="text" name="f000024429:cf" value="<?=$me['email']?>" size="60" maxlength="129">(確認用)<br>
<span class="msg">$error:mail$</span>
</td>
</tr>
<tr>
<td class="title">名前</td>
<td class="data">
<input type="text" name="f000024430" value="<?=$me['name']?>" size="60" maxlength="64"><br>
<span class="msg">$error:name$</span>
</td>
</tr>
<tr>
<td class="title">性別</td>
<td class="data">
<select name="f000024762">
<option value="">--- 選択してください ---</option>
<option value="男性" <?=$me['gender_m']?>>男性</option>
<option value="女性" <?=$me['gender_f']?>>女性</option>
</select><br>
<span class="msg">$error:gender$</span>
</td>
</tr>
<tr>
<td class="title">生年月日</td>
<td class="data">
<input type="text" name="f000024763:y" value="<?=$me['birth_y']?>" size="4" maxlength="4">年
<input type="text" name="f000024763:m" value="<?=$me['birth_m']?>" size="2" maxlength="2">月
<input type="text" name="f000024763:d" value="<?=$me['birth_d']?>" size="2" maxlength="2">日<br>
<span class="msg">$error:birthday$</span>
</td>
</tr>
</table>
</body>
</html>