it-swarm.dev

Facebookログイン-joomlaにログインを指示

JoomlaサイトのFacebookログイン(FB SDK Javascript)を開発して、登録/ログインの代替方法を追加しています。

私がやったことは:

  • FBアプリを作成
  • サイトに関連するコードを挿入する
  • FB.login()から接続された統計を取得します。
  • 基本情報を入手した:名前、電子メールなど

Joomlaへのログインに使用する次の関数を見つけましたが、この方法ではユーザー名とパスワードを入力する必要があります。

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

私の質問は:
FBから許可を得た後、電子メールとパスワードを入力せずにJoomlaにログインしたいので、どのモジュール/ヘルパー/関数を使用する必要がありますか?

1
Leonard Thong

製品の購入、コメントの投稿など、ユーザーのアクションがどこかに記録されている場合、ユーザーのIDまたはユーザーのユーザー名が利用可能である必要があります。

この場合、ユーザーのJoomlaアカウントを作成する必要があります。

ステップ1.ユーザーがFacebookに正常にログインする

ステップ2.a.彼がすでにアカウントを持っている場合(Eメールをチェックするなどにより)、アカウントのユーザー名ログインを取得します(パスワードは必要ありません)。

ステップ2.b.彼がアカウントを持っていない場合、あなたは彼のためにダミーアカウントを作成します。より良い方法は、ユーザー名(およびパスワード)を提供するように依頼することです。これは一度だけ行うことを知らせてください。何らかの理由でFacebookログインを使用できない場合、このユーザー名を使用してサイトにログインできます。彼のユーザー名を使用してログインします。

これは、コミュニティコンポーネントでこのタスクに使用するサンプルコードです。

        /*
         * 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

認証プラグインを作成して代替の認証情報を受け取り、アクセスを承認する必要があります。

コア認証プラグインの1つに基づいて作成できます。たとえば、PlgAuthenticationCookieです。

0
Anibal