8

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

当我的一个项目涉及 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 框架应用程序中?

4

3 回答 3

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

谢谢你。

于 2014-04-29T04:49:42.887 回答
0

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

其次,就实际连接工作和你有什么而言,我会将其作为扩展 CApplicationComponent 的组件,并将文件放在扩展目录或组件目录中。如果你想让它成为一个真正的对象。我认为 helpers 的想法只是一组松散的函数,我主要使用 helpers 进行数组和字符串工作。

于 2013-04-10T14:30:25.420 回答
0

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

所以主要配置就像

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

你可以像这样使用它

Yii::app()->facebookService->[method_I_defined]
于 2014-07-01T19:52:48.500 回答