私は手動でユーザーのデータを取得できますが、プログラム的には取得できません。サーバー側のコードを使用してfacebook認証を使用してユーザーのデータをプログラマチックに取得する方法は?
、それは、からされる - https://developers.facebook.com/docs/authentication/
<?php
$app_id = "MY_APP_ID";
$app_secret = "MY_APP_SECRET";
$my_url = "ADDRESS_OF_CURRENT_PAGE";
session_start();
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = @file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
?>
出力こんにちはだけで、ユーザー名は表示されません!
私はエコー-INGの$応答が$ token_urlとして適切な値を持って何も出力し、持っていないなどの問題が、のfile_get_contents()であると思います。
$response = @file_get_contents($token_url);
- PHPバージョン5.2.9 =
- エラー報告はオフであるが、コードでこれを含む - error_reportingの(E_ALL)。出力しません。
更新日 - 私はこれを6ヶ月後に試してみました。それ以来変わったのは私のホスティングだけです。以前はHostBigを使っていました。 レッスン - $ 1/monthホスティングサービスに依存しないで、信頼できません。
HRMは、あなたが "@" なしでそれを試してみましたか?それはエラーを抑制しています。 – finity
過去にfile_get_contentsにあった1つの問題は、レスポンスヘッダーにエラーが含まれていると、実際のWebサーバーの応答データを提供しないことです。一方、ブラウザは一般的に応答を表示します。デバッグが簡単にはなりません。 – finity
@finity私は '@'なしで試しました。実際には、私は数時間の期間にわたって、このコードの多数の順列/組み合わせを試しました!何も動作しません。 file_get_contents関数を避けることができますか? –