我試圖讓用戶通過Facebook在我的web應用程序上註冊。作爲我正常註冊的一部分,用戶必須提供他們的電子郵件地址,我需要將其作爲Facebook註冊的一部分。在註冊時獲取Facebook用戶電子郵件
我使用下面的代碼,它能正常工作,除非它不返回用戶電子郵件地址作爲Facebook響應的一部分。我知道我需要專門「詢問」電子郵件,但我很困惑我在下面的代碼中在何處/如何執行此操作?
我也知道用戶可能會選擇不提供他們的電子郵件地址作爲過程的一部分,但我能夠處理。
// Grab our facebook details
$app_id = $this->config->item('fb_app_id');
$app_secret = $this->config->item('fb_secret_key');
$my_url = $this->config->item('fb_url');
session_start();
if(isset($_REQUEST["code"]))
{
$code = $_REQUEST["code"];
}
else
{
$_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 ((isset($_REQUEST['state'])) && (($_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));
if (! empty($user))
{
// NO EMAIL HERE?!
$email = strtolower($user->email);
}
}
謝謝 - 我看到了 - 但我很困惑在上面我的代碼中包含'範圍'電子郵件的地方?我會再看看... – Laurence
$ dialog_url =「https://www.facebook.com/dialog/oauth?scope=email&client_id=」 –
感謝您的幫助 - 這工作 – Laurence