Как сделать Facebook Войти в MVC, используя PHP SDK v4?

Что я хочу ?
Я хочу сделать правильный вход на Facebook в MVC

Мое дерево каталогов (упрощенно):

index.php
/controllers
/users.class.php
/core
/libs
/facebook-sdk (contains Facebook SDK files)
/models
/user.class.php
/views
/login.php
/user
/index.php

Моя проблема :
Я знаю, как создать однофайловую учетную запись Facebook, я знаю, как создать форму для входа в MVC, но я новичок в Facebook PHP SDK Framework.

Мой одностраничный код (упрощенно):

// Autoload the required files
require_once(ROOT.'core/libs/facebook-sdk/autoload.php');
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
...

// Initialize the SDK
FacebookSession::setDefaultApplication('APP_ID', 'APP_SECRET');

// Create the login helper
$helper = new FacebookRedirectLoginHelper('REDIRECT_URL');

// Check if existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
// Create new session from saved access_token
$session = new FacebookSession( $_SESSION['fb_token'] );
// Validate the access_token to make sure it's still valid
try {
if ( ! $session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// Catch any exceptions
$session = null;
}
} else {
// No session exists
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
echo $ex->message;
}
}

// Check if a session exists
if ( isset( $session ) ) {
// Save the session
$_SESSION['fb_token'] = $session->getToken();
// Create session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
} else {
// No session
// Get login URL
$loginUrl = $helper->getLoginUrl();
echo '<a href="' . $loginUrl . '">Log in</a>';
}

Если я ссылаюсь на свое понимание MVC, я должен поместить весь этот код в функцию FacebookAuth в контроллере (кроме кнопки входа в систему?)? Нужно ли включать Facebook SDK во все мои приложения? или только для входа?

Заранее спасибо

-1

Решение

Ваш вопрос касается только одного конкретного случая, но реальная проблема в том, что вы недостаточно хорошо понимаете MVC. Я бы предложил вам прочитать статью, объясняющую MVC. Вам также следует использовать существующую инфраструктуру MVC, если у вас нет веских причин не делать этого. Эти рамки не позволят вам заново изобрести колесо.

MVC вкратце:
(M) Одель несет ответственность за ваши данные,
(C) контролер отвечает за обработку этих данных (например, преобразование, проверка, …),
(V) iew — это просто представление, ваш контроллер должен предоставить вашему представлению данные.

В вашем случае это означает, что логика для проверки токена и получения loginUrl из SDK Facebook является вашей контроллеры responibility. Отображение URL логина должно быть сделано вашим Посмотреть.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]