2011-04-18 101 views
2

我正在嘗試將我的基於Web的應用程序與Facebook進行整合。Facebook OAuth 2.0問題

首先,我創建login/facebook網頁會被重定向用戶的網址:https://www.facebook.com/dialog/oauth?client_id=MY_ID&redirect_uri=https://www.domain.com/connect/facebook&scope=email,user_about_me,user_location

到目前爲止好。在這個階段沒有問題。

如果用戶授權我的應用程序,他將被重定向到www.domain.com/connect/facebook頁面。在這個頁面上,我使用FB返回的數據在我的數據庫中創建用戶,或者只是授權用戶並創建會話。在這一步我有問題。當我使用的代碼從Facebook開發幫助頁面一切工作的例子:

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $this->app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" 
    . $this->secret . "&code=" . $code; 
$access_token = file_get_contents($token_url); 
$graph_url = "https://graph.facebook.com/me?" . $access_token; 
$user_object = json_decode(file_get_contents($graph_url)); 

當我用下面的代碼片段一切完美。不過,我更喜歡使用PHP-SDK並遇到問題。當我使用以下代碼片段時:

$session = $this->facebook->getSession(); 
var_dump($session); 
      if($session) 
      { 
       try 
       { 
        $uid = $this->facebook->getUser(); 
        $me = $this->facebook->api('/me'); 

        var_dump('me'); 
       } 
       catch (FacebookApiException $e) 
       { 
        error_log($e); 
       } 
      } 

會話爲空。任何人有任何建議?


編輯
具有PHP-SDK一些有趣後,我發現了一些有趣的東西: 當我使用SDK getLoginUrl()方法來生成重定向URL,它似乎是部分工作。

$login_url = $this->facebook->getLoginUrl(
     array(
      'api_key' => $this->api_key, 
      'req_perms' => 'email,user_work_history,user_about_me,user_location', 
      'next' => 'https://www.domain.com/connect/facebook' 
     ) 
    ); 

現在,當用戶授權我的應用程序,他被重定向到糾正一些PARAMS頁面,URL看起來像: https://www.domain.com/connect/facebook?session={"session_key"%3A"11111111111-111111111"%2C"uid"%3A"11111111"%2C"expires"%3A0%2C"secret"%3A"111111111"%2C"base_domain"%3A"domain.com"%2C"access_token"%3A"1111111|222222.0-33333|sdvsdvsdvsdvsdv"%2C"sig"%3A"gsdbsdbsdbsdbsdbsdbsdb"}

任何人有任何想法,爲什麼它不是哈希值或不應該?

乾杯, 馬立克

回答

1

您可能想添加:

'canvas' => 0, 
'fbconnect' => 1 
中的參數你getLoginUrl陣列