2013-03-07 2 views
8

Ich habe die Facebook SDK-Dateien in das Verzeichnis protected/helpers gelegt, von dem ich Klassen und Drittanbieter-Helfer für meine Yii-Anwendung automatisch lade.Die beste Art, Facebook PHP SDK in Yii Framework zu implementieren

Wenn eines meiner Projekte Facebook-Login beteiligt, habe ich diese einfache und schnelle Lösung mit dem Yii::app()->params, um die Vererbung einer Objekteigenschaft in der gesamten Anwendung zu erreichen.

// don't mind this $facebook variable, it's just a shortcut in this method 
Yii::app()->params['facebook'] = $facebook = new Facebook(array(
    'appId' => '148966221932337', 
    'secret' => 'a52ce7b4a0cd5d517c6ada53fc77cde7', 
    'cookie' => true, 
)); 

$user = $facebook->getUser(); 

Dadurch, ich habe die Yii::app()->params['facebook'], scharf oder unscharf geschaltet, verfügbar in meiner Anwendung und auf diese Weise ich den Facebook-API-SDK zugreifen kann, wo immer in meiner Anwendung, aber ich glaube, dass dies keine gute Lösung.

Gibt es bessere Lösungen für die Implementierung des Facebook API SDK in die Yii Framework-Anwendung?

+2

Verwenden [Komponenten] (http://www.yiiframework.com/doc/guide/1.1/ de/basics.component) oder schauen Sie sich einige Erweiterungen an, wie [facebook-opengraph] (http://www.yiiframework.com/extension/facebook-opengraph) –

+0

In der Vergangenheit habe ich yii-user extension installiert und erstellt dann eine neue Komponente, die den yii-user erweitert. Sie können den yii-Benutzer verwenden, um Login-Tokens zu speichern. Auch ich halte meine App Keys in der Config. – aCodeSmith

Antwort

0

Ich versuche immer, Konfigurationsvariablen in der DB zu speichern. Vor allem, wenn sie einen geheimen Schlüssel beinhalten. Ich würde die Crypt-Funktionalität von Yii verwenden und sie in der Datenbank speichern. Dann würde ich ein Modell zum Abrufen von Konfigurationsvariablen wie diesem erstellen.

Zweitens, soweit die eigentliche Verbindung funktioniert und was Sie haben, würde ich das als eine Komponente setzen, die CApplicationComponent erweitert, und entweder die Datei in das Verzeichnis extensions oder die Komponenten platzieren. Wenn Sie es zu einem wahren Objekt machen wollen. Ich denke, die Idee der Helfer ist nur ein Satz, eine lockere Funktion, meistens benutze ich Helfer für Array- und String-Arbeit.

6

Ya. Download Facebook SDK-Dateien und halten Sie sie in geschützten/components/Facebook dann config/main.php mit

'import'=>array(  //autoloading model and component classes 
    'application.models.*', 
    'application.components.*', 
    'application.components.Facebook.*', 
), 

bearbeiten und appid andsecret Schlüssel in Ihrem param

'params'=>array(
    'Facebook'=>array( 
     'appId' => '148966221932337', 
     'secret' => 'a52ce7b4a0cd5d517c6ada53fc77cde7', 
     'cookie' => true, 
    ), 
); 

Von Ihnen Seite hinzufügen, die Sie anrufen können Ihr Facebook SDK wie dieses

$facebook = new Facebook(Yii::app()->params['Facebook']); 
$user_id = $facebook->getUser(); 

danke.

0

Etwas spät, aber ich habe die Facebook SDK-Dateien mit Composer heruntergeladen, diese automatisch geladen und einen FacebookService erstellt, der CApplicationComponent erweitert, das das SDK umschließt.

So ist die Hauptkonfigurations ist wie

'facebookService'=>array(
      'class' => 'FacebookService', 
      'appId' =>'xxxxxxxxxxx', 
      'appSecret' => 'xxxxxxxxxx', 
      'extendedAccessToken' => "xxxxxxxxxx", 
     ), 

und Sie können es verwenden, wie

Yii::app()->facebookService->[method_I_defined]