close

這篇我來說明他的程式跟原理。

在使用者看起來很簡單,就是透過你提供的網址,按下去之後登入,就完成。但是其實應用程式主機可能就要做好幾個動作。

在所有動作前,你要先確定你的應用程式 ID / API 鑰匙(App ID)應用程式密鑰(App Secret)。可以參考http://expect7.pixnet.net/blog/post/45803234 文章中,如何取得。

首先是使用者透過你提供的網址進行登入。

程式的部分,比較重要的是,要讓使用者點選的網址跟參數(用GET帶過去):
網址:https://www.facebook.com/dialog/oauth
參數:client_id 對應的值是 App id
         redirect_uri 對應的值是 Facebook回應的網址要指向哪裡。

<?php

//這是你在FB上面的應用程式ID
$app_id="117065791768431";
//這是你在FB上面的應用程式密鑰
$app_secret="32ece7919cf7d15fb7f7975841397de3";
//Facebook 運算處理完後,會導回你指向的網址,並把資料傳向該網址
$return_url=http://test.com.tw/FaceBookOPENID.php;

?>

<a href="https://www.facebook.com/dialog/oauth?client_id=<?php echo $app_id ?>&redirect_uri=<?php echo $return_url ?>">Facebook</a>

這是使用者會看到的畫面。

當你點選後,如果你還沒登入Facebook,則會導到登入的頁面。要求你登入。

登入之後,就會跳一個畫面,要你允許前往應用程式。當使用者點選之後,接下來就是伺服器要做的事情了。

接來的動作就是要取得憑證。

當使用這登入後,並且點選前往應用程式。將會依照你設定的redirect_uri回傳資訊。回傳的資訊會用GET的方式回傳一個code的變數。那就是要抓取這個coed變數來運算。

取得code的值之後,就要參照另一個網址,把組合的資訊丟過去,以獲取憑證
網址:https://graph.facebook.com/oauth/access_token
參數:client_id 對應的值是 App id
       client_secret 對應的值是App Secret
       redirect_uri 對應的值是 Facebook回應的網址要指向哪裡。
       code 對應的值,就是上一個步驟運算回傳的值。

這邊可以用CURL背景運算的方式取得或是直接用PHP的file_get_contents方式取得。

<?php

//這是你在FB上面的應用程式ID
$app_id="117065791768431";
//這是你在FB上面的應用程式密鑰
$app_secret="32ece7919cf7d15fb7f7975841397de3";
//Facebook 運算處理完後,會導回你指向的網址,並把資料傳向該網址
$return_url=http://test.com.tw/FaceBookOPENID.php;
if(isset($_GET["code"])){
    $code=$_GET["code"];
    $token_url="https://graph.facebook.com/oauth/access_token?client_id=$app_id&redirect_uri=$return_url&client_secret=$app_secret&code=$code";
    $access_token=file_get_contents($token_url);
}

?>

<a href="https://www.facebook.com/dialog/oauth?client_id=<?php echo $app_id ?>&redirect_uri=<?php echo $return_url ?>">Facebook</a>

最後一個步驟,完成就可以取得使用者的基本資訊了。

取得憑證之後,就可以透過下方網址跟facebook取得user基本資訊。
網址:https://graph.facebook.com/me
參數:就直接把上一個步驟截取的資訊串在後面就可以了。
比較重要的是FACEBOOK最後回傳的資訊是JSON格式,所以還是要透過函數處理過才能顯示。

<?php

//這是你在FB上面的應用程式ID
$app_id="117065791768431";
//這是你在FB上面的應用程式密鑰
$app_secret="32ece7919cf7d15fb7f7975841397de3";
//Facebook 運算處理完後,會導回你指向的網址,並把資料傳向該網址
$return_url=http://test.com.tw/FaceBookOPENID.php;
if(isset($_GET["code"])){
   $code=$_GET["code"];
   $token_url="https://graph.facebook.com/oauth/access_token?client_id=$app_id&redirect_uri=$return_url&client_secret=$app_secret&code=$code";
   $access_token=file_get_contents($token_url);
}
   $graph_url="https://graph.facebook.com/me?$access_token";
   $tmep=json_decode(file_get_contents($graph_url));
   print_r($tmep);

?>

<a href="https://www.facebook.com/dialog/oauth?client_id=<?php echo $app_id ?>&redirect_uri=<?php echo $return_url ?>">Facebook</a>

 

這樣就算幾大功告成了,當你取得USER基本資料後,你再決定看看要顯是什麼給USER看吧!

arrow
arrow
    全站熱搜

    阿基 發表在 痞客邦 留言(1) 人氣()