2011-01-19 5 views
1

私は既にプロジェクトにdjango-facebookconnectを統合していますが、ユーザーのログインメールフィールドが空のままでいると、このアプリケーションはユーザーのメールを保存しませんか?django-facebookconnectでfacebookユーザーのメールを受け取る方法はありますか?

それがないように思え:

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

をしかし、私はそれが電子メールを保存していない確認したときに、これはエラーまたはFacebookの制限ですか?

答えて

0

あなたはextended permissionをfacebookから入手する必要があります。

<?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); 
?> 
+0

こんにちはダモダラン!そのヒントをありがとう、私はこのページでJS SDKを使用してユーザーのアクセス許可を要求する方法を見つけたhttp://phdrocks.wordpress.com/2010/03/08/getting-extended-permissions-in-facebook/ – marman

関連する問題