2012-03-01 3 views
0

私は自分のウェブサイトにフォトギャラリーを持っており、それを表示して名前/メールアドレスを収集するためにFacebook認証が必要です。これまで私は[ここ] [1]に行って、働いていたPHPの例を試したことを読んだが、認証時にユーザ名/電子メールを取得する方法を混乱させている。私はこれを使用しましたが、この例では "コード"が空白で、 "状態"を取得する例のようなユーザーの情報をどのように得ることができますか?また、私のバージョンでは、リダイレクトを起動するだけで、2番目の条件が一度も満たされていない例はどうですか?phpやjavascriptを使用してfacebook認証の例からユーザーのメールを受け取る方法

例:ユーザーの電子メールを取得するための

<?php 

    $app_id = "YOUR_APP_ID"; 
    $app_secret = "YOUR_APP_SECRET"; 
    $my_url = "YOUR_URL"; 

    session_start(); 
    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    $dialog_url = "http://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($_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)); 
    echo("Hello " . $user->name); 
    } 
    else { 
    echo("The state does not match. You may be a victim of CSRF."); 
    } 

?> 

答えて

3

、あなたは電子メール(more)のように、必要な権限を与える必要があり

これを試してみてください。..

require_once "facebook.php"; 

$facebook = new Facebook(array('appId' => '[YOUR_APP_ID]', 'secret' => '[YOUR_SEC_ID]')); 

$user_fb = $facebook->getUser(); 

if($user_fb == 0) 
{ 
    $user_fb = $facebook->getUser(); 
} 

if ($user_fb) // Check user's FB user ID has getting or not 
{ 
    $user_profile = $facebook->api('/me'); 

    $logoutUrl = $facebook->getLogoutUrl(); 

    echo $user_profile['email']; 
    echo $user_profile['first_name']; 
    echo $user_profile['last_name'];    
} 

else // user's FB user ID has not getting load login url with email permission 
{  
    $perms = array('scope' => 'email'); 
    $loginUrl = $facebook->getLoginUrl($perms);   
    echo "<script> top.location.href='" . $loginUrl . "'</script>";   
} 

Download Package

+0

ありがとう –

1

authentication docsを再読んでくださいOAuthに関するいくつかのチュートリアル。

リダイレクトがfacebook.com認証ページが表示されますし、APIを介してデータにアクセスすることをアプリに許可にあなたは非codeバックリダイレクトされます正しく設定app_idapp_secretmy_urlを持っています空の。

関連する問題