Доступ ко всем данным в ответе API - PullRequest
0 голосов
/ 20 июня 2019

В настоящее время я использую SDK для получения сведений о группе.Глядя на модель Group, существует довольно много способов отображения данных.

Когда я print_r(), группа возвращает объект Group со защищенным свойством _propDict.Проблема в том, что некоторые из них не доступны через геттеры, например:

Microsoft\Graph\Model\Group Object
(
[_propDict:protected] => Array
(
    [id] => XX-YY-ZZ
    [deletedDateTime] => 
    [classification] => 
    [createdDateTime] => 2019-04-18T15:09:57Z
    [creationOptions] => Array
        (
            [0] => Team
            [1] => classAssignments
            [2] => ExchangeProvisioningFlags:2509
        )

    [description] => 
    [displayName] => Example Group
    [groupTypes] => Array
        (
            [0] => Unified
        )

    [mail] => test@example.com
    [mailEnabled] => 1
    [mailNickname] => ExampleGroup
    [onPremisesLastSyncDateTime] => 
    [onPremisesSecurityIdentifier] => 
    [onPremisesSyncEnabled] => 
    [preferredDataLocation] => 
    [proxyAddresses] => Array
        (
            [0] => SPO:SPO_ABCDE123456
            [1] => SMTP:test@example.com
            [2] => smtp:rest@example.onmicrosoft.com
        )

    [renewedDateTime] => 2019-04-18T15:09:57Z
    [resourceBehaviorOptions] => Array
        (
            [0] => HideGroupInOutlook
            [1] => WelcomeEmailDisabled
            [2] => ConnectorsDisabled
            [3] => SubscribeNewGroupMembers
        )

    [resourceProvisioningOptions] => Array
        (
            [0] => Team
        )

    [securityEnabled] => 
    [visibility] => HiddenMembership
    [extension_ABC123_Education_ObjectType] => Section
    [onPremisesProvisioningErrors] => Array
        (
        )
)
)

Так, например, в настоящее время нет способа получить deletedDateTime или createdDateTime.Я также хотел бы получить значение extension_ABC123_Education_ObjectType.

Есть ли простой способ сделать это, используя модель группы?

Спасибо

1 Ответ

2 голосов
/ 21 июня 2019

Проблема в том, что некоторые из них не доступны через геттеры

действительно, в этом случае можно рассмотреть следующий подход для его получения через 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
...