Je suis actuellement en train de construire une application en utilisant ZF et je veux intégrer Facebook Connect - avait quelques questions sur l'architecture.Architecture pour Zend Framework + Facebook Connect
Fonctionnalité: Toutes les connexions passent par FB connect, il n'y a pas d'autre formulaire de connexion. Lorsqu'un utilisateur clique pour la première fois sur "Connecter", l'application doit créer une entrée dans la base de données pour lier des données supplémentaires (avis, profil, etc.). L'en-tête doit avoir un bouton 'Connexion avec FB Connect' sur toutes les pages si l'utilisateur n'est pas connecté, et un message de bienvenue/image/profil terminé bar% si c'est le cas.
architecture Pour autant que je peux voir, il y a deux éléments - un appel JS qui gère la connexion, redirection et écriture des cookies (fb: login-button) et un peu de PHP qui lit le cookie. Je suis un peu confus au sujet de ce qui devrait aller où. Le bouton de connexion est via JS, donc je l'ai chargé dans ma layout.phtml et j'ai géré le contrôle des cookies via un View Helper - l'assistant récupère le cookie et le renvoie à la vue. C'est bien, mais je dois gérer des choses comme vérifier si l'utilisateur existe et ajouter de nouveaux utilisateurs à la base de données - cela ne semble pas être quelque chose qui appartient à un assistant. Je l'ai refacturé pour inclure le cookie PHP dans le contrôleur d'utilisateur, mais j'ai besoin du cookie dans la vue, qui est rendue par un contrôleur différent. J'ai appelé une aide d'action de vue, mais cela semble être plus pour renvoyer des pages partielles, et je ne peux pas obtenir la variable de tableau de cookie hors de lui. Je suis assez nouveau à MVC, et il me semble qu'il me manque quelque chose d'assez évident - des pensées?
code est juste à côté du site des développeurs FB:
class Zend_View_Helper_FacebookCookie extends Zend_View_Helper_Abstract
{
public function facebookCookie()
{
$FACEBOOK_APP_ID = 'xxx';
$FACEBOOK_SECRET = 'xxx';
$cookie = $this->getFacebookCookie($FACEBOOK_APP_ID, $FACEBOOK_SECRET);
//Zend_Debug::dump($cookie);
return $cookie;
}
public function getFacebookCookie($app_id, $application_secret)
{
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}
}
et dans la vue:
if ($cookie) { ?>
Your user ID is <?= $cookie['uid'] ?>
<?php } else { ?>
<fb:login-button></fb:login-button>
<?php } ?>
Quelle est la question? – Gordon
Je ne peux pas comprendre comment structurer cela, et où placer chaque fragment de code - devraient-ils être des aides, ou mettre dans le contrôleur? Comment puis-je obtenir le cookie dans la vue pour voir si l'utilisateur est connecté? – localtalent