我正在创建一个需要通过Microsoft oauth授权的站点。在yii / authclient中,只有实时客户端,并且不再起作用。
我试图写自己的书,但是出了点问题。据我了解,我的AuthAction没有看到clientId并返回404异常(无文本)。这是我的身份验证客户端代码。
我得到了什么
运行AuthAction类方法(默认)
class Office365OAuth extends OAuth2
{
public $authUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';
public $tokenUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
public $apiBaseUrl = 'https://login.microsoftonline.com/common/oauth2/v1.0';
public $scope = null;
public function init()
{
parent::init();
if ($this->scope === null)
{
$this->scope = 'https://graph.microsoft.com/User.Read';
}
}
/**
* Overrides default function to fix malformed url
*/
public function getReturnUrl()
{
return $this->returnUrl;
}
protected function defaultName()
{
return 'office365';
}
protected function defaultTitle()
{
return 'Office365';
}
/**
* For popup mode
*/
protected function defaultViewOptions()
{
return [
'popupWidth' => 800,
'popupHeight' => 500,
];
}
/**
* Gets new auth token to replace expired one.
*/
protected function initUserAttributes()
{
return $this->api('me', 'GET');
}
}
那么,如何通过MS图形进行身份验证?
答案 0 :(得分:0)
yii\authclient
软件包需要使用具有请求参数authclient=live
的returnUrl,例如https://example.com/site/auth?authclient=live
但是,Azure禁止returnUrl
中的请求参数。因此,要使yii\authclient
与Azure一起工作,即returnUrl为https://example.com/site/auth/live
。您需要使用请求参数来美化网址,如下所示:
在config/main.php
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'rules' => [
'site/auth/<authclient>' => 'site/auth'
]
]
]
在controllers/SiteController.php
中,
public function actions()
{
return [
'auth' => [
'class' => 'yii\authclient\AuthAction',
'successCallback' => [$this, 'onAuthSuccess']
]
];
}
...
public function onAuthSuccess($client) {
// get user data from client
$userAttributes = $client->getUserAttributes();
// DO YOUR THING
}