2016-12-04 10 views
0

Yii2 프레임 워크를 사용하여 제작 된 내 웹 사이트에서 Facebook을 통한 로그인을 시도하고 있지만 페이스 북 앱에서 사용 된 페이스 북 계정을 인증해도 로그인이 항상 실패합니다. 로그인.Yii2 Facebook 로그인 문제 : 클라이언트 보안 유효성 확인 중 오류가 발생했습니다.

Request failed with code: 400, message: Error validating client secret.

임 사용 yii2의 authclient :

return [ 
    'class' => 'yii\authclient\Collection', 
    'clients' => [ 
    'facebook' => [ 
     'class' => 'yii\authclient\clients\Facebook', 
     'authUrl' => 'facebook.com/dialog/oauth', 

     //Prod 
     'clientId' => 'appidhere', 
     'clientSecret' => 'appsecrethere', 



     'scope' => 'email, user_friends, public_profile', 

    ..... 

응용 프로그램 ID 및 응용 프로그램의 비밀이 올바른지, 그리고 FB 앱 설정뿐만 아니라 올바른

응답은 항상 오류입니다.

yii\httpclient\Request Object ([_url:yii\httpclient\Request:private] => graph.facebook.com/oauth/access_token [_fullUrl:yii\httpclient\Request:private] => [_method:yii\httpclient\Request:private] => POST [_options:yii\httpclient\Request:private] => Array ([userAgent] => My Application OAuth 2.0 Client [timeout] => 30 [sslVerifyPeer] =>) [isPrepared:yii\httpclient\Request:private] => [client] => yii\httpclient\Client Object ([baseUrl] => graph.facebook.com [formatters] => Array () [parsers] => Array () [requestConfig] => Array () [responseConfig] => Array () [contentLoggingMaxSize] => 2000 [_transport:yii\httpclient\Client:private] => yii\httpclient\StreamTransport [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] =>) [_headers:yii\httpclient\Message:private] => [_cookies:yii\httpclient\Message:private] => [_content:yii\httpclient\Message:private] => [_data:yii\httpclient\Message:private] => Array ([client_id] => realappidhere [client_secret] => ​realappsecrethere [code] => AQAr0KRC0m4V4lqD8LVcQLNjn76xkZS4skQYAvWf6O_DDeEclaj1LMQm_HoyCoZZezqDn7p9YfJm3qENabU8MKvmH1ffNJotMzgLW2XTbSqQEXlkg_sx7V-ibXRFagpfXTIqCp9Kr54O88bNYGikoOr4TM1ogGjViwS-qKLbvpR_vWgE_FPy9ecpgy86QOITpGrlVJaPAun2bzGaFXmU70Z4Kw3kBWUBPseWc_7ILGymZP-CIbRIIm_YZ8p7t9Vo7jZmieMSd-CMYfG0sgJcBjOgQNvsa3xtHNhPVa5BJNNTy89zulSpTAf3XB6HB_8eql0 [grant_type] => authorization_code [redirect_uri] => example.com/site/auth?role=influencer&authclient=facebook) [_format:yii\httpclient\Message:private] => [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] =>)

그리고 응답은 다음과 같습니다 :

yii\httpclient\Response Object ([client] => yii\httpclient\Client Object ([baseUrl] => graph.facebook.com [formatters] => Array ([urlencoded] => yii\httpclient\UrlEncodedFormatter Object ( [encodingType] => 1 [charset] =>)) [parsers] => Array () [requestConfig] => Array () [responseConfig] => Array () [contentLoggingMaxSize] => 2000 [_transport:yii\httpclient\Client:private] => yii\httpclient\StreamTransport Object ( [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] =>) [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [_headers:yii\httpclient\Message:private] => Array ([0] =>HTTP/1.1 400 Bad Request [1] => WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "Error validating client secret." [2] => Access-Control-Allow-Origin: * [3] => Pragma: no-cache [4] => Cache-Control: no-store [5] => facebook-api-version: v2.2 [6] => Expires: Sat, 01 Jan 2000 00:00:00 GMT [7] => Content-Type: text/javascript; charset=UTF-8 [8] => x-fb-trace-id: Ek0PFIJ3B3N [9] => x-fb-rev: 2718923 [10] => Vary: Accept-Encoding [11] => X-FB-Debug: yaiIHJkwC4T3UZKrzXOJGJ2DmCTaDr8nIRB3jQnNeEiknx0Ph7i2IR5XmAbxpjM7cBhSEy44AcrglCYEdZEmeg== [12] => Date: Sun, 04 Dec 2016 11:08:16 GMT [13] => Connection: close [14] => Content-Length: 115) [_cookies:yii\httpclient\Message:private] => [_content:yii\httpclient\Message:private] => > {"error":{"message":"Error validating client secret.","type":"OAuthException","code":1,"fbtrace_id":"Ek0PFIJ3B3N"}} [_data:yii\httpclient\Message:private] => [_format:yii\httpclient\Message:private] => [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] =>)

그래서 어떤 생각이 거기에 무슨 일이야

다음은 요청의 모습입니까?

참고 : stackoverflow에서 두 개 이상의 링크를 게시 할 수 없으므로 따옴표의 Facebook 링크에서 http와 https를 삭제했습니다.

+0

yii2-authclient 버전 http://nodge.ru/yii-eauth/demo2/login 당신이 가지고있다? – Bizley

+0

"yiisoft/yii2-authclient": "~ 2.1.0" – Emma

+0

오류 메시지에서 제안한 해결책 이외의 다른 해결책을 찾을 수 없습니다. 특정 응용 프로그램에서 clientId와 clientSecret의 조합이 틀려야합니다. 두 번 확인해주세요. – Bizley

답변

0

Yii2 EAuth 확장을 사용해보십시오. 가장 쉬운 방법으로 14 개의 diff 플랫폼을 통한 소셜 로그인을 제공하는 최고의 확장 프로그램입니다.

참조 URL : https://github.com/Nodge/yii2-eauth

데모 URL :