Я использовал CakePHP 2.4.4, facebook_php_sdk и пытался создать свою собственную функцию для создания пользователя через логин facebook/linkedin.
Насколько я понимаю, facebook не извлекает пароль, поэтому я создал пароль с пробелом и хешировал его перед сохранением. Причина, по которой я сделал это, заключается в том, что для «Аутентификации входа» требуется имя пользователя (которое я указал как адрес электронной почты) и пароль (что мне не очень ясно в отношении предоставленной аутентификации CakePHP, и здесь может быть неправильный подход для этого).
Проблема, с которой я столкнулся прямо сейчас, заключается в том, что пользователь выполняет ручное создание через «[email protected]» и, например, вводит простой пароль. Позже, если этот Пользователь войдет через facebook, созданный с тем же адресом электронной почты «[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()
Пользователь создан через facebook:-
$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);
Спасибо за ответы XuDing, которые я должен сделать :-
$this->Auth->login($user)
Еще один сценарий: что, если пользователь захочет выполнить вход вручную, когда учетная запись изначально была создана с помощью входа через Facebook?