0

我正在寻找有关如何在我的 Cake PHP 应用程序中使用 Facebook PHP SDK 的建议和指导。

我已经阅读了有关将 Facebook PHP SDK 添加为供应商包的文章(关于 SO 的一篇或 2 篇文章),但在查阅了 Cake Cook Book 之后:

http://book.cakephp.org/2.0/en/development/vendor-packages.html

似乎已删除对供应商包的支持,首选方法是将功能重新打包为插件。

你能告诉我如何做到这一点。最好的情况是在为插件提供一些参数后如何将数据返回到我的 Cake PHP 应用程序的工作示例:

  • 方法:例如。FQL
  • 查询:例如。选择 eid、名称、描述、start_time、end_time、位置、地点、pic_cover FROM event WHERE eid = xyz
  • 访问令牌:'应用程序 ID | 密钥'

值得一提的是,我过去曾开发过使用 Facebook Javascript SDK 的客户端 jquery 插件。本质上,我希望构建一个与此等效的服务器端并在我的 CakePHP 应用程序中实现它

4

2 回答 2

1

我可以看到您正在使用 CakePHP 2。最近我使用 SDK 版本 5 开发了一个 Facebook 应用程序,它使用了 Namespace 。我在控制器中加载 SDK 所做的是,修改了 Bootstrap 文件以包含使用命名空间的库。在 /app/Config/bootstrap.php 添加以下代码:

spl_autoload_register(function ($class) {

    foreach (App::path('Vendor') as $base) {

        $path = $base . str_replace('\\', DS, $class) . '.php';

        if (file_exists($path)) {

            include $path;

            return;

        }

    }

});

然后我将 Facebook Sdk 放在 /app/Vendor/ 目录中。我可以在我的控制器中成功加载 Facebook 库,如下所示:

function login(){
    session_start();
    App::import('Vendor','Facebook',array('file'=>'Facebook'.DS.'Facebook.php'));
    $this->fb = new Facebook\Facebook([
      'app_id' => 'YOUR APP ID',
      'app_secret' => 'APP SECRET',
      'default_graph_version' => 'v2.5',
    ]); 
    $helper = $this->fb->getRedirectLoginHelper();
    $permissions = ['email', 'user_likes','publish_actions','manage_pages','publish_pages','read_page_mailboxes','pages_show_list','pages_manage_cta']; // optional
    $loginUrl = $helper->getLoginUrl('Your Callback URL', $permissions);

    echo 'Log in with Facebook!';
    exit;
}

您也可以在我的博客中看到相同的步骤。在 CakePHP2 中加载 Facebook SDK

于 2016-02-25T10:14:50.760 回答
0

仍然支持导入供应商库,(不是很详细的)文档是关于供应商资产(CSS、JS、图像等)的。

假设 Facebook PHP SDK 文件夹位于 中/app/Vendor/,请按照 Cook Book 中的说明导入库:

App::import('Vendor', 'Facebook', array
(
    'file' => 'facebook-php-sdk' . DS . 'src' . DS . 'facebook.php'
));

然后按照 SDK示例测试中所示使用它:

$facebook = new Facebook(array(
    'appId'  => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
));
$response = $facebook->api(array(
    'method' => 'fql.query',
    'query' => 'SELECT eid, name, description, start_time, end_time, location, venue, pic_cover FROM event WHERE eid = xyz',
));
于 2013-09-02T15:30:23.753 回答