わかりましたので、Google にこの問題を解決してもらいました。FB Advanced Registrationのドキュメントも役に立ちませんでした。ユーザーが次のように自分のユーザー名を選択 (および利用可能かどうかを確認) できる Facebook 登録が必要です:
(この質問に直接写真を投稿できないため、計画しているが失敗したことのスクリーンショット)
スクリーンショットへのリンク私が欲しかったもの!
PHP を使用して mysql の DB からユーザー名が利用できるかどうかを確認する予定ですが、理解できなかったこの奇妙な JSON コールバックの問題に悩まされています。私の登録プラグインは次のようになります
<fb:registration
fields='[{"name":"name"},{"name":"username","description":"Username","type":"text"}]'
onvalidate="validate_async"
redirect-uri="http://mysite.com/loginFB.php"
fb_only="false"
width="530">
</fb:registration>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function validate_async(form, cb) {
// $.getJSON('https://graph.facebook.com/' + form.username + '?callback=?',//CODE obtained from FB documentation
$.getJSON('https://mysite.com/checkUsername.php?username=' + form.username + '?callback=?',
function(response) {
if (response.error== "false") {
// Username isn't taken, let the form submit
cb();
}
cb({username: 'That username is taken, Sorry!'});
});
}
</script>
checkUsername.phpに正確に何を書くのか知りたかったのです。
現在、動作しない checkUsername.php の次のコードを思いつきました。
<?php
$conn = dbconnect(GLOBAL_Db);
$username = $_GET['username'];
$data = array();
$table = mysql_real_escape_string(GLOBAL_Db. "." . GLOBAL_Users);
$sqlCommand = "SELECT * FROM ".$table." WHERE username='$username'";
$query = mysql_query($sqlCommand) or die (mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows>0){
$data['error'] = "true";
} else {
$data['error'] = "false";
}
echo json_encode($data);
?>
このコードでは、「ユーザー名が使用されています。申し訳ありません」というメッセージが表示されません。なぜですか???
誰かが実際にスクリプトのこの getJSON 関数で私を助けてくれたら本当にありがたいです.JSON、(JSONP)などについて非常に大雑把な知識があるので、checkUsername.phpについても助けてください! 私の問題を説明するためにもっと努力して喜んでいます。これは今から1週間ほど私を悩ませています! 皆さんからの貴重な助けを喜んで受け入れます!