2016-06-30 5 views
3

저는 Laravel을 (를) 처음 접하기 때문에 사회적 인증을 얻으려고합니다. 일부 자습서를 보았으며 Facebook에서 사용자 ID, 프로필 사진 및 이름을 검색해야합니다. 제 문제는 이메일입니다. 그것은 null입니다.Laravel 5.2 Socialite Null 이메일을 받으십시오.

나의 현재 객체는 이것이다 :

User {#195 ▼ 
    +token: "EAACYY1xBrzcBAO9KZAjZAZAZBQHWhbtZAb9lIXvH9Y6miRUiABImupk3ZCzHRxy2ZBxc9DU8f1ZAcrw0NEVMmy3GOQMSSyrmDTvMPyREvGm4pA1Ok6zI85LxES4Huy2ZCsxIUr2ISbLreLIv1ZACItUUoqqAnvVPyR4s0ZD" 
    +id: "989087311199546" 
    +nickname: null 
    +name: "MyName" 
    +email: null 
    +avatar: "https://graph.facebook.com/v2.2/mypicturecode/picture?type=normal" 
    +"user": array:2 [▼ 
    "name" => "MyName" 
    "id" => "MyId" 
    ] 
} 

을 내 컨트롤러는 다음과 같습니다

class FacebookController extends Controller 
{ 
    public function facebook() 
    { 
     return Socialite::driver('facebook') 
      ->scopes(['email'])->redirect(); 
    } 
    public function callback() 
    { 
     $user = Socialite::with('facebook')->user(); 

     return dd($user); 
     // $user->token; 
    } 
} 

내가 최근에 뭔가를 발견했다. 내가 가진 "guzzlehttp/guzzle": cURL 오류 60 : SSL 인증서 문제 : 로컬 발급자 인증서를 얻을 수 없습니다 (http://curl.haxx.se/libcurl/c/libcurl-errors.html 참조) 오류를 피하기 위해 작곡가에서 "~ 4.0" 오류가 있습니다. guzzle 4.0이 설치되면 Laravel Socialite는 2.0.4 버전으로 돌아갑니다. 2.0.18 버전의 전자 메일 및 first_name/last_name 문제를 처리하는 것처럼 보입니다. 문제는 4.0의 guzzle 4.0이 설치되었을 때 사교계가 필요하다는 것입니다. 2.0.4

+0

다른 페이스 북을 시도해 봤어을 제공 할 수 아래? –

+0

예, 적어도 3 개의 다른 페이스 북 계정을 시도했습니다 –

답변

1

Facebook 사용자는 이메일 주소 대신 전화 번호를 사용하여 등록 할 수 있습니다. 즉, 페이스 북에는 해당 사용자의 이메일 주소가 없습니다.

그리고 개인 정보 보호 정책이있을 수 있습니다. 당신이 laravel 5.2을 사용하고 2.0 사교계하는 경우 https://developers.facebook.com/docs/facebook-login/permissions#reference-email

+0

이메일로 페이스 북에 등록한 사람들의 여러 이메일과 페이스 북 어플리케이션에 사용자 이메일 정보를 검색하는 확인란이 있습니다. –

+0

이상하게 들릴지 모르지만 대신이 구문을 사용하지 않으시겠습니까? $ user = Socialite :: driver ('facebook') -> 사용자 이름 (> 'first_name', 'last_name', '이메일', '성별', '생일' ) 우리의 사용 테이블에 // stroing 데이터와 $ 데이터 = [그들을 로그인 '이름'=> $ 사용자 -> getName(), 'FIRST_NAME'=> $ 사용자 -> getName(), ' email '=> $ user-> getEmail() ]; –

0

:

이에서보세요. 그러면이 문제에 직면하게됩니다. 그것은 사교계의 버그입니다. 아래 코드로 교체하십시오. 경로 : 공급 업체 \ laravel \ 사교계 \ SRC \ 두

https://github.com/laravel/socialite/blob/2.0/src/Two/FacebookProvider.php

\ 다음 코드는 당신에게 자세한 return Socialite::driver('facebook')->fields([ 'first_name', 'last_name', 'email', 'gender', 'birthday' ])->scopes([ 'email', 'user_birthday' ])->redirect();