簡體   English   中英

如何第三方應用程序訪問Yii2(HumHub)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM