我已将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框架应用程序中?
答案 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]