Entwicklung » Community
Wie kann ich Facebook an die RedSYS Community anbinden?
Um Facebook an die RedSYS Community anzubinden muss erst eine App bei Facebook erstellt werden. Bei der APP müssen mindestens die beiden folgenden Felder befüllt werden. (Beispiel)
Site URL: http://www.aman.de
Site Domain: aman.de
In der Datei kernel/system/conf/postsetup.php.local muss dann die app_id und der app_secret hinterlegt werden und die externe Authentifizierung wird aktiviert.
<?php
$REDSYS_ENV['external-auth']['facebook'] = array(
'default' => array(
'app_id' => '123456778',
'app_secret' =>
'123456778123456778222'
),
);
$AdminSession->activate_external_auth('facebook','default');
$MySession->activate_external_auth('facebook','default');
?>
Für das Backend ist somit die Anbindung auch schon umgesetzt. Mit einem klick in RedSYS auf den Facebook Button in der Buttonleiste oben rechts im Backend, öffnet sich nun ein popup und Sie werden dazu aufgefordert der angelegten Facebook APP Zugriff auf Ihre Daten zu gewähren. Beim nächsten Login müssen Sie sich nicht erneut anmelden sondern können einfach den Button "Login with Facebook" verwenden.
Implementierung im Frontend:
Wenn der User nicht eingeloggt ist, wird Ihm der Button "Login with Facebook" angezeigt. Dazu folgenden Code verwenden welcher mit Javascript ein Fenster öffnet. Die function getFacebookLoginUrl liefert die passende URL um danach auch wieder auf der entsprechenden Seite zu landen.
<?
$fblogin = $MySession -> getFacebookLoginUrl($_SERVER['PHP_SELF']);
if ($fblogin !== false) {
echo '<a href="#" onClick="openwin(\''.$fblogin.'\',800,600)"><img src="'.$PATHS["url"].'rsys_acssserv/skins'.$REDSYS_ENV["SKIN"]["name"].'/images/facebook-login.png"/></a>'
}
?>
Wenn der User eingeloggt ist, aber noch bei Ihm noch keine Facebook UID hinterlegt ist, wird ihm durch ein symbol angeboten dies zu tun. Beim Klick auf das Logo wird ein popup geöffnet welches den User darum Bittet der App zugriff auf seine Daten zu gewähren. Wird alles überprüft und dargestellt durch folgenden Code.
<?php
$fbconnect_url = '#'
if ($MySession -> hasActiveExternalAuth('facebook')) {
if (!isset($MySession -> UserDataRef['external_auth_facebook_uid']) || !$MySession -> UserDataRef['external_auth_facebook_uid']) {
$fbconnect_alttext = getLocalString('Facebook-Connect ist konfiguriert aber für Ihr Login nicht aktiv. Aktivieren Sie Facebook-Connect durch Klick auf das Icon.');
$fbconnect_url = $MySession -> getFacebookConnectUrl($_SERVER['PHP_SELF']);
?>
<a href="#" onClick="window.open('<?php echo $fbconnect_url ?>','fbconnect','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=600');"><img id="fbconnect_view" src="<?php echo $PATHS["url"] ?>rsys_acssserv/skins/<?php echo $REDSYS_ENV["SKIN"]["name"] ?>/images/icons/fbconnect_active.png" alt="<?php echo $fbconnect_alttext ?>" title="<?php echo $fbconnect_alttext ?>" border="0" /></a>
<?php
}
}
?>
Natürlich können andere Icons verwendet und der Code Angepasst werden. Die Snippets von oben sind ausschließlich Beispiele.
Um die Daten eines Users von Facebook zu laden und Sie direkt in der RedSYS Community abzulegen empfehle ich einen das Event "onLoginRequired" welches im Plugin Communityuser definiert werden kann. Innerhalb dieser Funktion stehen die Daten des Facebook Users dann über die Methode $sessionobj->getFacebookUserprofile(); zur Verfügung und können Beispielsweise mit $communityuser -> registerUser(); in der RedSYS Community abgelegt werden. Natürlich sollten zum ablegen noch die bekannten behaviour und propertys gesetzt werden.
Tags: facebook, community, fbconnect, connect, fb, ldap, external, auth, external-auth
Verwandte Artikel:
- Wie kann ich eine Shopstruktur aus dem Commerce-Bereich im Sitemenü ausgeben?
- Ich habe die Meta-tags einer Seite verändert und sehe die Änderung nicht im Livebereich?
- Wie lege ich eine weiße Seite an, ohne hinterlegtes Template? Wenn ich ein neues Dokument anlege, dann kann ich nur rsys-Dokumente mit Template anlegen. Wie umgehe ich das Template?
- Wie lege ich die Rechte für Gruppen und Rollen fest, so dass nur eine bestimmte Benutzergruppe auf die Seiten zugreifen kann
- Ich habe in der Community "Kundenattribute" mit "Attributseiten" und "Attributgruppen" angelegt, aber ich sehe keine Felder, wenn ich einen Kunden anlege.
Letzte Änderung des Artikels: 2011-08-26 15:20
Verfasser des Artikels: Mario Sarcher
Revision: 1.5
Kommentieren nicht möglich