Je développe un identifiant facebook (FB SDK Javascript) pour un site Joomla afin d’ajouter un moyen alternatif d’enregistrement/d’identification.
Ce que j'ai fait c'est:
J'ai trouvé la fonction suivante que j'utilise pour me connecter à Joomla, mais de cette manière, je dois fournir un nom d'utilisateur et un mot de passe.
$result = JFactory::getApplication()->login(array('username' => $username, 'password' => $password), array('remember' => true));
Ma question est:
Après avoir obtenu la permission de FB, je souhaite me connecter à Joomla sans entrer d'adresse e-mail et de mot de passe. Quel module/aide/fonction dois-je utiliser?
Si l'action de l'utilisateur est enregistrée quelque part, par exemple, acheter un produit, poster un commentaire, ..., l'identifiant ou le nom d'utilisateur de l'utilisateur doit être disponible.
Dans ce cas, vous devez créer un compte Joomla pour votre utilisateur.
Étape 1. Connexions utilisateur avec Facebook avec succès
Étape 2.a. S'il a déjà eu un compte (en vérifiant l'email, etc ...), vous obtenez le nom d'utilisateur du compte (pas besoin de mot de passe).
Étape 2.b. S'il n'a pas de compte, vous créez un compte factice pour lui. Une meilleure solution consiste à lui demander de fournir un nom d'utilisateur (et un mot de passe). Indiquez-lui qu'il ne le fait qu'une fois. Ce nom d'utilisateur peut être utilisé pour se connecter au site si, pour certaines raisons, il ne peut pas utiliser le nom d'utilisateur Facebook. Utilisez son nom d'utilisateur pour le connecter.
Voici l'exemple de code que j'utilise pour cette tâche dans mon composant de communauté.
/*
* Get user info by email address.
* If user is already registered, we log user in. If we haven't saved
* this connection yet, we save it from now.
* If user is not registered yet, we redirect user to register function.
*/
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName(array('id', 'username')))
->from($db->quoteName('#__users'))
->where($db->quoteName('email') . ' = ' . $db->quote($email));
$user = $db->setQuery($query)->loadObject();
if (isset($user->id))
{
// Log user in.
$options = array('action' => 'core.login.site');
$response = array('username' => $user->username);
JPluginHelper::importPlugin('user');
$result = $app->triggerEvent('onUserLogin', array($response, $options));
$app->redirect(JRoute::_('index.php?Itemid=' . $itemId, false));
return true;
}
else
{
$app->redirect(JRoute::_('index.php?option=com_cmcommunity&task=registration.socialRegister&network=' . $this->pluginId, false));
return false;
}
Vous devez créer un plugin d'authentification pour recevoir les informations d'identification alternatives et autoriser l'accès.
Vous pouvez le créer en vous basant sur l'un des principaux plug-ins d'authentification. Par exemple, PlgAuthenticationCookie.