[英]How to 3rd party application access to Yii2 (HumHub)
我想讓第3方PHP應用程序訪問Yii2用戶數據( HumHub ),並嘗試了以下方法:
function getUserId() {
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$yiiConfig = require('../protected/config/common.php');
(new humhub\components\Application($yiiConfig));
$user = Yii::$app->user->identity;
return $user;
}
這是行不通的。 在new humhub\\components\\Application($yiiConfig)
之前沒有錯誤,但是第三方應用程序中斷且未引發任何錯誤,並且該函數不返回任何內容。
我確實找到了行不通的解決方案 。
是否有理由不起作用或是否有其他解決方案來正確獲取Yii2用戶數據?
這是HumHub V1.0中的操作方法
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$config = yii\helpers\ArrayHelper::merge(
require('../protected/humhub/config/common.php'),
require('../protected/humhub/config/web.php'),
(is_readable('../protected/config/dynamic.php')) ? require('../protected/config/dynamic.php') : [],
require('../protected/config/common.php'),
require('../protected/config/web.php')
);
new yii\web\Application($config); // No 'run()' invocation!
現在我可以得到$ user對象:
$user = Yii::$app->user->identity;
確實應該拋出一個錯誤,但是,PHP的錯誤設置可能會被覆蓋或設置為不顯示錯誤。
您調用未定義的對象Yii::$app->user->identity
。 原因,來自文檔,因為您尚未初始化Yii對象。 因此,您的代碼應如下所示:
function getUserId() {
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$yiiConfig = require('../protected/config/common.php');
(new humhub\components\Application($yiiConfig)); // try to comment this line too if it does not work
// Add The Following Line
new yii\web\Application($yiiConfig); // Do NOT call run() here
$user = Yii::$app->user->identity;
return $user;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.