2016-04-22 40 views
0

我在我的Yii應用程序中遇到FB登錄問題。當我嘗試獲取用戶屬性時,應用程序返回內部服務器錯誤。我檢查了所有日誌,發現什麼都沒有Yii2 AuthClient Facebook

這是我的配置

'authClientCollection' => [ 
     'class' => 'yii\authclient\Collection', 
     'clients' => [ 
      'facebook' => [ 
       'class' => 'yii\authclient\clients\Facebook', 
       'authUrl' => 'https://www.facebook.com/dialog/oauth?display=popup', 
       'clientId' => 'xxxxxxxx', 
       'clientSecret' => 'xxxxxxxxx', 
      ], 
     ], 
    ], 

控制器動作

public function actions() 
{ 
    return 
    [ 
     'auth' => 
     [ 
      'class' => 'yii\authclient\AuthAction', 
      'successCallback' => [$this, 'authSuccess'], 
     ], 
    ]; 
} 

和應用程序崩潰,當它到達的回調裏面這個說法

$attributes = $client->getUserAttributes(); 

這是$客戶端對象

object(yii\authclient\clients\Facebook)#115 (20) { 
    ["authUrl"]=> 
    string(51) "https://www.facebook.com/dialog/oauth?display=popup" 
    ["tokenUrl"]=> 
    string(45) "https://graph.facebook.com/oauth/access_token" 
    ["apiBaseUrl"]=> 
    string(26) "https://graph.facebook.com" 
    ["scope"]=> 
    string(5) "email" 
    ["attributeNames"]=> 
    array(2) { 
    [0]=> 
    string(4) "name" 
    [1]=> 
    string(5) "email" 
    } 
    ["version"]=> 
    string(3) "2.0" 
    ["clientId"]=> 
    string(15) "xxxxxxxxxx" 
    ["clientSecret"]=> 
    string(32) "xxxxxxxxxx" 
    ["_returnUrl":"yii\authclient\BaseOAuth":private]=> 
    string(49) "http://xxxxxx.xx/auth?authclient=facebook" 
    ["_curlOptions":"yii\authclient\BaseOAuth":private]=> 
    array(0) { 
    } 
    ["_accessToken":"yii\authclient\BaseOAuth":private]=> 
    object(yii\authclient\OAuthToken)#117 (5) { 
    ["tokenParamKey"]=> 
    string(12) "access_token" 
    ["tokenSecretParamKey"]=> 
    string(18) "oauth_token_secret" 
    ["createTimestamp"]=> 
    int(1461360063) 
    ["_expireDurationParamKey":"yii\authclient\OAuthToken":private]=> 
    NULL 
    ["_params":"yii\authclient\OAuthToken":private]=> 
    array(2) { 
     ["access_token"]=> 
     string(175) "EAACZCvJlBssYBAF1vwxq7PMgKAsEz5GueWEpBTf3OZAGEHPrONRKVXLGggRudgsNcpHiWD2IWDlEwnVmku9qmyYvUWh2VYVPShOK6VfsQ7TID1dEozVUMgYU01raFK3IBJ2mvi5PNztnqgQ12d0yBZBYnZCVloft4FmkkYyjvwZDZD" 
     ["expires"]=> 
     string(7) "5181417" 
    } 
    } 
    ["_signatureMethod":"yii\authclient\BaseOAuth":private]=> 
    array(0) { 
    } 
    ["_id":"yii\authclient\BaseClient":private]=> 
    string(8) "facebook" 
    ["_name":"yii\authclient\BaseClient":private]=> 
    NULL 
    ["_title":"yii\authclient\BaseClient":private]=> 
    NULL 
    ["_userAttributes":"yii\authclient\BaseClient":private]=> 
    NULL 
    ["_normalizeUserAttributeMap":"yii\authclient\BaseClient":private]=> 
    NULL 
    ["_viewOptions":"yii\authclient\BaseClient":private]=> 
    NULL 
    ["_events":"yii\base\Component":private]=> 
    array(0) { 
    } 
    ["_behaviors":"yii\base\Component":private]=> 
    NULL 
} 

編輯:我剛發現Yii的AuthClient(可能是FB改變的響應?)肯定有問題,因爲我在大約一年前的另一個項目中使用了它,它工作得很好。現在,我試圖登錄到該項目,並將其做同樣的事情

回答

0

對不起,我沒有資格評論... 請發表您的功能內容

function authSuccess($client) { 
... 
} 

額外: 檢查你的用戶模型已實現IdentityInterface和yii \ web \ User它在登錄函數中設置了用戶屬性。 你可以在那裏設置斷點。

+0

這並不重要,即使我只有一行功能 $ client-> getUserAttributes(); 它只是試圖獲取屬性時崩潰 – 94mp205

+0

我的用戶類實現IdentityInterface並且工作正常,無論如何,它與AuthClient無關,因爲應用程序崩潰時嘗試從Facebook響應獲取屬性,而不是從我的用戶 – 94mp205

+0

nginx錯誤和yii2運行時/日誌/ app.log沒有任何信息? –