it-swarm.dev

Accesso Facebook - Dì a joomla di accedere

Sto sviluppando un login Facebook (FB SDK Javascript) per un sito Joomla per aggiungere un modo alternativo per registrarsi/accedere.

Quello che ho fatto è:

  • Crea app FB
  • Inserisci il codice pertinente sul mio sito
  • Ottieni statistiche connesse da FB.login ().
  • Informazioni di base: nome, email ... ecc

Ho trovato la seguente funzione che utilizzo per accedere a Joomla, ma in questo modo mi viene richiesto di fornire nome utente e password.

$result = JFactory::getApplication()->login(array('username' => $username, 'password' => $password), array('remember' => true));

La mia domanda è:
Dopo aver ottenuto l'autorizzazione da FB, desidero accedere a Joomla senza inserire e-mail e password, quindi quale modulo/supporto/funzione dovrei usare?

1
Leonard Thong

Se l'azione dell'utente viene registrata da qualche parte, ad esempio acquistare un prodotto, pubblicare un commento, ... l'ID utente o il nome utente dell'utente devono essere disponibili.

In questo caso, devi creare un account Joomla per il tuo utente.

Passaggio 1. L'utente accede correttamente a Facebook

Passaggio 2.a. Se ha già avuto un account (controllando l'e-mail, ecc ...), ottieni il nome utente dell'account di accesso (non è necessaria la password).

Passaggio 2.b. Se non ha un account, crei un account fittizio per lui. Un modo migliore è chiedergli di fornire un nome utente (e una password), fargli sapere che lo fa solo una volta, questo nome utente può essere utilizzato per accedere al sito se per alcuni motivi non è possibile utilizzare l'accesso a Facebook. Usa il suo nome utente per accedere.

Ecco il codice di esempio che utilizzo per questa attività nel mio componente di comunità.

        /*
         * 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;
        }
0
Hung Tran

Devi creare un plugin di autenticazione per ricevere le credenziali alternative e autorizzare l'accesso.

Puoi crearlo in base a uno dei plug-in di autenticazione di base. Ad esempio, PlgAuthenticationCookie.

0
Anibal