2014-01-15 2 views
0

facebook_php_sdk에서 CakePHP 2.4.4를 사용하고 facebook/linkedin 로그인을 통해 사용자를 생성하는 기능을 직접 만들려고했습니다.CakePHP 인증 로그인 (잘못된 접근?)

내가 아는 한 페이스 북은 암호를 검색하지 않으므로 저장하기 전에 암호와 암호를 해시하고 해시합니다. "인증 로그인"에 username (이메일로 입력)과 password (제공된 CakePHP Auth에 대해 명확하지 않아 여기에 잘못된 접근 방식이 될 수도 있기 때문에)를 수행 한 이유가 여기에 있습니다.

내가 직면 한 문제는 사용자가 "[email protected]"을 통해 수동 생성을 수행하고 예를 들어 간단한 암호를 입력하는 경우입니다. 나중에 동일한 이메일 "[email protected]"을 사용하여 만든 facebook을 통해이 사용자가 로그인하는 경우 해당 사용자는 이미이 이메일을 가지고있는 데이터베이스에서 로그인하지 못합니다.

나는 뭔가 잘못되었다고 확신하지만 어디서부터 시작해야할지 모르겠다. 어떤 가이드와 포인팅도 크게 감사 하리라.

이것은 내가 페이스 북을 통해 로그인하는 방법입니다 -

$user_profile = $facebook->api('/me','GET'); 
    $this->request->data['User']['username'] = $user_profile['email']; 
    $this->request->data['User']['password'] = ' '; 
    $this->Auth->login() 

페이스 북을 통해 생성 된 사용자 : -이 작업을 수행해야 XuDing 답변

$data = array(
    'name'  => $user_profile['name'], 
    'username' => $user_profile['email'], 
    'email' => $user_profile['email'], 
    'password' => ' ', 
    'create_source' => 1 //Used this to differentiate from fb or linkedin 
); 

$this->User->save($data); 

감사합니다 : -

$this->Auth->login($user) 

하나 더 시나리오 : 사용자가 수동으로 로그인 한 경우 계정이 초기에 Facebook 로그인에 의해 생성 된 경우 어떻게됩니까?

+1

나는 페이스 북이나 링크드 인 API 년대에 익숙하지 않은 해요,하지만 내가 함께 할 수 갖는 이유가없는 한 생각 API가 원래 작성된 계정을 구별하기 위해 API를 구별하지 않아야하며 사용자가 해당 이메일 주소의 계정으로 로그인 할 수 있어야합니다. – Kai

+0

감사합니다 카이, 나는 서드 어드바이스를 통해 그 일을 해냈습니다. 그리고 포스트 밑에 업데이트 된 또 다른 시나리오가 있습니다. –

답변

2

사용자 이름 (이메일)이 이미있는 경우 Facebook ID를 사용하여 찾을 수 있으며 $ this-> Auth-> login ($ user)을 사용하여 직접 로그인 할 수 있습니다. 이 플러그인 코드를 확인, 그것은 페이스 북을 사용하여 로그인의 전체 로직이 포함되어

function __syncFacebookUser 

https://github.com/webtechnick/CakePHP-Facebook-Plugin/blob/master/Controller/Component/ConnectComponent.php#LC129

+0

좋은 @XuDing, 나는 이것이 내게 큰 시간 $ this-> Auth-> login ($ user)을 도울 수 있다는 것을 거의 잊었다. 사용자가 수동 로그인을 원했지만 계정이 처음 페이스 북 API에 의해 작성된 경우에는 또 하나의 질문이 있습니까? –

+2

그런 경우 설정 페이지를 통해 비밀번호를 업데이트하도록 허용 할 수 있습니다. 업데이트 후에는 정상적으로 로그인 할 수 있습니다. – XuDing