2012-01-11 7 views
0

Я пытаюсь решить эту проблему в течение трех дней, это очень просто для тех, кто хорошо знаком с открытым графиком api. Я новичок в интеграции с Facebook, но имею опыт работы с PHP.Хранение маркера доступа

В основном все, что я пытаюсь сделать, это получить следующую информацию от пользователей и сохранить ее в базе данных.

Facebook User ID: Имени Пол Email

Я сделал идентификатор пользователя, имя и пол с помощью:

$contents = file_get_contents ('https://graph.facebook.com/'.$user); 
$json=json_decode($contents,true); 
$userid = $json['id']; 
$username = $json['name']; 
$usergender = $json['gender']; 
$useremail = $json['email']; 

Это работает, и я понимаю, что нужно просить разрешения получить доступ к электронной почте, которую я сделал с помощью этого кода:

$app_id = "211665122244023"; 

    $canvas_page = "http://apps.facebook.com/midcitymafia/"; 

    $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,publish_actions"; 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

Но как мне получить доступ s, а затем использовать его для получения электронной почты из графика?

## UPDATE, это мой текущий код, все еще не могу получить его на работу ...
require 'src/facebook.php'; 
$app_id = "211665122244023"; 

    $canvas_page = "http://apps.facebook.com/midcitymafia/"; 

    $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,publish_actions"; 

    $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("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
     $graph = json_decode(file_get_contents("https://graph.facebook.com/".$user_id . "/?accesstoken=" .$data['access_token'])); 
    } 

$userid = $graph->id; 
$username = $graph->name; 
$usergender = $graph->gender; 
$useremail = $graph->email; 

?> 

<br> 

<?php echo 'ID: ' . $userid; ?> 
<br> 
<?php echo 'Name: ' . $username; ?> 
<br> 
<?php echo 'Gender: ' . $usergender; ?> 
<br> 
<?php echo 'Email: ' . $useremail; ?> 

ответ

1

signed_request содержит пользователь access_token внутри себя.

В вашем случае access_token в $data['access_token']

Хранение пользователя access_token не лучшая идея, так как они обеспечивают в течение короткого периода времени, и истек позже. Чтобы получить постоянный access_token, вы должны запросить у пользователя offline_access (я лично не рекомендовал бы его, так как вы можете достичь большинства вещей, не требуя offline_access, во многих случаях приложение access_token может соответствовать вашим потребностям).

+0

Спасибо, теперь я не могу просто сохранить это в моей базе данных, могу ли я? Я имею в виду, они истекают право? Как я могу его обновить? Я прочитал «отменяю страницу», но на самом деле не понимаю ... –

+0

Теперь я добрался до этого кода ^^ проверить главный пост, по-прежнему не работает .. спасибо. –

Смежные вопросы