2015年5月7日 星期四

FB Oauth2 授權登入-part2 ( php寫法)

設定完 FB APP 的資料後,
即可以開始使用PHP撰寫 FB Oauth登入。


code部分如下:


 
<?php 
$app_id = "xxxxxxxxxxxxxxxxxxx";      //FB APP的 ID
$app_secret = "xxxxxxxxxxxxxxxxxxx";  //FB APP的 Secret
$my_url = "http://localhost:8000/fb.php";  // 驗證完畢來redirect的網址
 
session_start();
if(isset($_REQUEST["code"]))
{
  $code = $_REQUEST["code"];    //返回的oauth 授權 返回code驗證資訊 
}

 
if(empty($code)) {
 $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
 $dialog_url = "https://www.facebook.com/v2.12/dialog/oauth?client_id=".$app_id."&redirect_uri=".$my_url."&state=".$_SESSION['state'].'&scope=user_birthday,email,user_friends'."&response_type=code";
 echo  $dialog_url;
 echo "<br>"."<br>";
}  
 

if(isset($code)) {

    $token_url = "https://graph.facebook.com/v2.12/oauth/access_token?"."client_id=".$app_id."&redirect_uri=".$my_url."&client_secret=".$app_secret."&code=".$code;
    echo $code;
    echo "<br>"."<br>";

    $curl = curl_init($token_url);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($curl);
    echo var_dump($response);
    $response = json_decode($response);
    echo var_dump($response);
    echo "<br>"."<br>";
    curl_close($curl);

    $graph_url = "https://graph.facebook.com/v3.0/me?access_token="
      . $response->access_token."&fields=id,name,gender,friends";
    
    $curl = curl_init($graph_url);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $user_data = curl_exec($curl);

    print_r($user_data);
    $user_data = json_decode($user_data);
    $user = $user_data->id;
    $url = "http://graph.facebook.com/".$user_data->id."/picture?type=large";
    $name = $user_data->name;   
    echo "使用者ID:".$user."</p><p>";
    echo "使用者url:".$url."</p><p>";
    echo "臉書名稱:".$name."</p><p>";
   }
else
{
    echo("顯示錯誤,請從正確網址進入");
    
}
 
?>
 

?>













1 則留言:

  1. 可以提供http://localhost/test/FB/fb_oauth.php測試嗎?

    回覆刪除