将Facebook PHP SDK实现到Yii Framework的最佳方式

时间:2013-03-07 13:04:06

标签: php yii facebook-php-sdk facebook-login

我已将Facebook SDK文件放入protected/helpers目录,我从中为我的Yii应用程序自动加载类和第三方帮助程序。

当我的一个项目涉及Facebook登录时,我想出了这个简单快速的解决方案,使用Yii::app()->params来实现整个应用程序中对象属性的继承。

// 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();

因此,我在我的应用程序中可以使用Yii::app()->params['facebook'],设置或取消设置,这样我可以在我的应用程序中随时随地访问Facebook API SDK,但我相信这不是一个好的解决方案。

有没有更好的解决方案将Facebook API SDK应用到Yii框架应用程序中?

3 个答案:

答案 0 :(得分:6)

雅。下载Facebook SDK文件并将其保存在protected / components / Facebook中,然后使用

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

并在你的参数中添加appid和密钥

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

从您的页面,您可以像这样调用您的Facebook SDK

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

答案 1 :(得分:0)

我总是尝试在DB中存储配置变量。特别是如果它们涉及密钥。我会使用Yii的crypt功能并将其存储在db中。然后我会创建模型来检索这样的配置变量。

其次,就实际的连接工作和你有什么,我会把它作为扩展CApplicationComponent的Component,并将文件放在extensions目录或components目录中。如果你想让它成为一个真正的对象。我认为帮助者的想法只是一个松散的功能,大多数我使用帮助器进行数组和字符串工作。

答案 2 :(得分:0)

有点晚了,但我最终用composer下载了Facebook SDK文件,自动加载了这些文件,并创建了一个扩展了包含SDK的CApplicationComponent的FacebookService。

所以主配置就像

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

你可以像

一样使用它
Yii::app()->facebookService->[method_I_defined]