如何第三方应用程序访问Yii2(HumHub)
我想给Yii2用户数据的第三方PHP应用程序访问(HumHub),并尝试这样的:如何第三方应用程序访问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)
之前没有任何错误,但第三方应用程序中断并没有抛出任何错误,并且该函数不返回任何内容。
我确实发现this solution哪些不起作用。
是否有理由这不起作用或有没有替代解决方案来正确获取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 = Yii::$app->user->identity;
这不是一个答案,只需编辑你的问题并添加它。 – SaidbakR
为什么这不是一个答案?当我在问题中运行代码时,它不起作用。当我在这个答案中运行代码时,它工作。 – lilbiscuit
对不起,我错误地认为'HumHub V1.0'是'Yii V1.0' – SaidbakR
事实上的错误应该被抛出,但是,错误的设置您的PHP可能会被覆盖或设置为不显示错误。
您可以调用未定义的对象Yii::$app->user->identity
。原因是,从documentation因为你还没有初始化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;
}
你读[**这个官方**](http://www.yiiframework.com/doc-2.0/guide-tutorial-yii-integration.html#使用-yii-in-others)文件? – SaidbakR