有没有办法用django-facebookconnect获取facebook用户的电子邮件?

时间:2011-01-19 03:59:41

标签: django facebook

我已经在我的项目中集成了django-facebookconnect,但是当用户登录电子邮件字段保持空白时,我的意思是这个应用程序不保存用户电子邮件?

看起来确实如此:

user = User(username=request.facebook.uid, 
                    password=sha.new(str(random.random())).hexdigest()[:8],
                    email=profile.email)

但是当我检查它不能保存电子邮件时,这是错误还是facebook限制?

1 个答案:

答案 0 :(得分:0)

您需要从Facebook获取extended permission

<?php 
$app_id = "YOUR_APP_ID";
    $app_sec = "APP_SEC";
$canvas_page = "APP_CANVAS_PAGE_URL";
$scope = "&scope=user_photos,email,publish_stream";           $auth_url"http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" .       urlencode($canvas_page).$scope; 
$signed_request = $_REQUEST["signed_request"];   
list($encoded_sig, $payload) = explode(".", $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, "-_", "+/")), true); 
 if (empty($data["user_id"])) {
 echo(""); } 
 $access_token = $data["oauth_token"]; 
$user_id = $data["user_id"]; 
    $user = json_decode(file_get_contents( "https://graph.facebook.com/me?    access_token=" .         $access_token)); 
function get_facebook_cookie($app_id, $application_secret) { 
$args = array();
parse_str(trim($COOKIE["fbs" . $app_id], "\""), $args); 
    ksort($args);
$payload = ""; 
foreach ($args as $key => $value) { 
if ($key != "sig") { 
$payload .= $key . "=" . $value; 
} 
} 
if (md5($payload . $application_secret) != $args["sig"]) {
return null; 
} 
return $args; 
} 
$cookie = get_facebook_cookie($app_id, $app_sec); 
?>
相关问题