2012-01-11 9 views
0

私は3日間この問題を解決しようとしています。オープングラフのAPIをよく知っている人にとってはとても簡単です。私はFacebookとの統合は初めてですが、PHPの経験があります。アクセストークンを保存する

私がしようとしているのは、基本的にユーザーから次の情報を取得し、データベースに格納することです。

FacebookのユーザーID: 名前 性別、私が使用してユーザーID、名前と性別を行っている

メール:

$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); 

どうすればアクセス権を得ることができますかそのトークンを使用してグラフから電子メールを取得しますか?

## 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

は、ユーザーaccess_tokenを保存$data['access_token']

である彼らは時間の短い期間のために提供し、後に期限が切れて以来、最高のアイデアではありません。永久になるにはaccess_tokenoffline_accessの許可をユーザーに依頼する必要があります(多くの場合、offline_accessを要求せずにほとんどのことを達成できる可能性があるので個人的には推奨しません)。access_token

+0

ありがとう、今私はそれを私のデータベースに保存することはできませんか?私の言うことは、彼らの権利が失効しているということですか?それをどうやって更新すればいいですか?私は '取消しのページ'を読んだことがありますが、実際には理解していません。 –

+0

私は今このコードを持っています^^メインポストをチェックしても、まだ動作していないようです..ありがとう。 –

関連する問題