1

そのため、ユーザーがログインするたびに、ユーザーのセッションを作成したいと思います。FacebookAPIを使用してログインしています。ちなみに、私はPHPとすべてにまったく慣れていないので、スクランブルされている場合はお詫びします。

現在、私が持っているのはログインコントローラーにあるものです。

    if ($user) {
        try {
            // Proceed knowing you have a logged in user who's
            // authenticated.
            $user_profile = $facebook->api('/me');
        } catch (FacebookApiException $e) {
            error_log($e);
            $user = null;
        }

        if (! empty($user_profile)) {
            // Get the relevant information from the user's profile.
            $firstname = $user_profile['first_name'];
            $lastname = $user_profile['last_name'];
            $userid = $user_profile['id'];
            $model = new Enligne_Model_Users();
            $model->createUser($firstname, $lastname);
            $session = new Zend_Session_Namespace('session'); //Creates a new Zend namespace equivalent to session start.
            $session['uid'] = $userid; //sets the user id of the session to uid.
            Zend_Registry::set('usersession', $session); //sets the user session in the zend registry.

        }
    }

これはセッションを作成するための正しい場所ですか?ユーザーがログインしたら、「ログイン」してほしいのですが、そうです。セッションを使用しているという事実を反映するために、ユーザーファイルも編集する必要がありますか?助けてくれてありがとう!

4

1 に答える 1

1

あなたはこのようにすることができます:

<?php
$user = $facebook->getUser();
//Create Zend_Session_Namespace
$session = new Zend_Session_Namespace('usersession');
if ($user) {
    try {
        // Proceed knowing you have a logged in user who's
        // authenticated.
        $user_profile = $facebook->api('/me');
        if (!empty($user_profile)) {
            // Get the relevant information from the user's profile.
            $firstname = $user_profile['first_name'];
            $lastname = $user_profile['last_name'];
            $userid = $user_profile['id'];
            $email = $user_profile['email'];

            $model = new Enligne_Model_Users();
            $result = $model->createUser($firstname, $lastname, $email);
            //gets the data from database and stored it into the session
            if ($result) {
                $session->userId = $result['id'];
                $session->fb_email = $result['emailId'];
                $session->fb_id = $result['socialId'];
                $session->fb_image = "http://graph.facebook.com/" . $userid . "/picture";
                $session->fb_firstName = $result['firstName'];
                $session->fb_lastName = $result['lastName'];
                //redirect to the controller or action
                $this->_redirect('your_controller_name');
            } else {
                //Redirect code                
            }
        }
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}
?>

お役に立てば幸いです。

于 2013-01-21T12:05:19.593 に答える