Entwicklung » Community

ID #1291

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:

Letzte Änderung des Artikels: 2011-08-26 15:20
Verfasser des Artikels: Mario Sarcher
Revision: 1.5

Digg it! Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen
Übersetzungsvorschlag für Übersetzungsvorschlag für
Bewertung der Nützlichkeit dieses Artikels:

Durchschnittliche Bewertung: 0 von 5 (0 Bewertungen)

vollkommen überflüssig 1 2 3 4 5 sehr wertvoll

Kommentieren nicht möglich