我下面this教程設置Facebook的PHP SDK 5.0擴展在我的Yii 2.0項目。它工作正常,但每次(在任何控制器),我需要使用的一些功能從這裏this,我需要一個實例是這樣的:Facebook的PHP SDK 5.0中的Yii 2.0框架(配置文件)
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.5',
// . . .
]);
,並在以後使用它:
// Send a GET request
$response = $fb->get('/me');
// Send a POST request
$response = $fb->post('/me/feed', ['message' => 'Foo message']);
// Send a DELETE request
$response = $fb->delete('/{node-id}');
但我不確定這是多麼的實際,使我需要使用它的每個動作/控制器中的對象的實例。我想將這些數據作爲一般數據添加到配置文件中。所以,我想是這樣的:
'components' => [
.
.
'facebook' => [
'class' => 'Facebook\Facebook',
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.5'
],
.
.
在我想利用這個值,如行動
及更高版本:
$fb = Yii::$app->facebook;
,之後做上述所有操作。所以我想概括像所有其他的擴展配置文件中的值,但我不斷收到錯誤:
Facebook\Exceptions\FacebookSDKException
Required "app_id" key not supplied in config and could not find fallback environment variable "FACEBOOK_APP_ID"
是否有可能這在Web配置文件中輸入,並與,避免形成在每次Facebook調用之前擁有相同憑證的對象?
編輯1:
回覆@machour響應:
我跟着您的建議,它仍然拋出了同樣的錯誤。後來我發現它的工作如下:
<?php
namespace your\namespace;
use Facebook\Facebook;
class MyFacebook extends Facebook {
public $app_id = '{app-id}';
public $app_secret = '{app-secret}';
public $default_graph_version = 'v2.5';
public function __construct()
{
parent::__construct([
'app_id' => $this->app_id,
'app_secret' => $this->app_secret,
'default_graph_version' => $this->default_graph_version
]);
}
}
然後:
'components' => [
.
.
'facebook' => [
'class' => 'your\namespace\MyFacebook'
]
在某些時候,這是可以接受的解決方案,因爲冗餘被消除。鑰匙不僅在一個地方。
但你有什麼想法如何將所有的鑰匙轉移到配置文件,而不是MyFacebook
類?
請參閱我的編輯1 – delux