Проблема в том, что некоторые из них не доступны через геттеры
действительно, в этом случае можно рассмотреть следующий подход для его получения через msgraph-sdk-php
.
Предположим, что расширенные данные предоставляются для каждой группы и имеют имя contoso_grpstatus
:
GET https://graph.microsoft.com/v1.0/groups/{group-id}?$select=displayName,description,contoso_grpstatus
{
"displayName": "Group 123",
"description": "Group 123",
"contoso_grpstatus": {
"@odata.type": "#microsoft.graph.ComplexExtensionValue",
"Status": "Active"
}
}
, где contoso_grpstatus
- расширение схемы
{
"id": "contoso_grpstatus",
"description": "Contoso - Group status",
"targetTypes": [
"Group"
],
"status": "Available",
"owner": "d1433ee1-b39b-49b0-b022-b1072a0aee38",
"properties": [
{
"name": "Status",
"type": "String"
}
]
}
затем можно ввести пользовательский класс группы, который расширяет \Microsoft\Graph\Model\Group
:
class GroupWithStatus extends \Microsoft\Graph\Model\Group{
public function getStatus()
{
if (array_key_exists("contoso_grpstatus", $this->_propDict)) {
return $this->_propDict["contoso_grpstatus"];
} else {
return null;
}
}
}
и, наконец, можно получить свойства группы (DisplayName
) вместе с пользовательскими данными (contoso_grpstatus
)как это:
$url = "/groups/$groupId?\$select=displayName,contoso_grpstatus";
$group = $client->createRequest("GET", $url)
->setReturnType(GroupWithStatus::class)
->execute();
$displayName = $group->getDisplayName();
$status = $group->getStatus(); //custom data property