2014-04-22 143 views
2

我製作了一個CakePHP插件,用於使用Facebook,Twitter,Google和LinkedIn進行社交網絡身份驗證。整個插件工作100%沒有錯誤或錯誤,但最近我試圖通過Facebook登錄,我發現自己無法從API獲取數據。無法從Facebook SDK獲取數據

這是我所做的。

AuthController Facebook的行動

public function facebook(){ 
    $facebookObj = SocialAuth::init('facebook'); 
    $facebookLoginUrl = $facebookObj->getLoginUrl(array('scope' => SocialAuth::getConfig('facebook','permissions'), 
     'canvas' => 1, 
     'fbconnect' => 0, 
     'redirect_uri' => SocialAuth::getConfig('facebook','redirect_uri'))); 
    $this->redirect($facebookLoginUrl); 
} 

AuthController回調動作

public function callback(){ 
    $facebookObj = SocialAuth::init('facebook'); 
    $facebookInfo = $facebookObj->getUser(); 

    if ($facebookInfo) { // $facebookInfo always return 0 (it was working before >_<) 
     // .. 
    } 
} 

$ facebookInfo調試信息

/app/Plugin/SocialAuth/Controller/AuthsController.php (line 104) 
object(Facebook) { 
    [protected] sharedSessionID => null 
    [protected] kSupportedKeys => array(
     (int) 0 => 'state', 
     (int) 1 => 'code', 
     (int) 2 => 'access_token', 
     (int) 3 => 'user_id' 
    ) 
    [protected] DROP_QUERY_PARAMS => array(
     (int) 0 => 'code', 
     (int) 1 => 'state', 
     (int) 2 => 'signed_request' 
    ) 
    [protected] appId => '503845519711145' 
    [protected] appSecret => '--secret--' 
    [protected] user => (int) 0 
    [protected] signedRequest => null 
    [protected] state => '59e2aba0d18dcc166d8c4aef0f1668c9' 
    [protected] accessToken => '{app-id}|{app-secret}' 
    [protected] fileUploadSupport => false 
    [protected] trustForwarded => false 
    [protected] allowSignedRequest => false 
} 

我該如何解決這個問題?

+2

夥計,你公開發布了你的應用祕密 - 所以儘快去重置吧。 (是的,你用'--secret - '替換了'appSecret' ......但看看你的'accessToken'的第二部分,它應該看起來很熟悉......)至於你的問題,Facebook PHP SDK返回0用戶ID是一個已經討論過很多的問題 - 我不知道SocialAuth是否正在使用,但是您應該能夠從這些討論中獲得一些線索。如果不是,請求SocialAuth的提供者修復它(畢竟,這是一個付費組件,如果我們在這裏談論相同的SocialAuth,對嗎?) – CBroe

+0

SocialAuth它只是我自己製作的一個插件。 –

+0

這對我們來說確實很難修復 - 因爲您正在使用我們無法看到源代碼的自制插件。你的插件是否使用Facebook PHP SDK?停止工作之前,你做了什麼改變?您的插件是否成功地將訪問令牌的代碼作爲oauth進程的一部分進行交換(問這是因爲上述訪問令牌看起來像是應用訪問令牌而不是用戶訪問令牌) – madebydavid

回答

2

我試圖更新到最新的Facebook的PHP-SDK和問題得到了解決......

我也不得不上傳fb_ca_chain_bundle.crt文件。