In diesem Tutorial erfahren Sie, wie Sie offene Erweiterungen verwenden.
Stellen Sie sich vor, Sie erstellen eine Anwendung, die auf mehreren Clientplattformen verfügbar ist, z. B. desktop- und mobil. Sie möchten, dass die Benutzer der App ihre Benutzeroberfläche so konfigurieren, dass sie konsistent ist, unabhängig davon, welches Gerät sie für die Anmeldung verwenden.
Für dieses Szenario wird in diesem Artikel Folgendes beschrieben:
- Stellen Einige Roamingprofilinformationen über den Benutzer mithilfe von offenen Erweiterungen dar.
- Abfragen des Benutzers und Zurückgeben des Roamingprofils.
- Ändern Sie die Roamingprofilinformationen des Benutzers, die in der geöffneten Erweiterung gespeichert sind.
- Löschen der Roamingprofilinformationen des Benutzers.
Hinweis
Neben Benutzern werden auch offene Erweiterungen unterstützt und können für andere Ressourcentypen verwaltet werden.
Voraussetzungen
Um die Schritte in diesem Artikel zu reproduzieren, benötigen Sie die folgenden Berechtigungen:
- Melden Sie sich bei einem API-Client wie Graph Explorer als Der Benutzer an, für den Sie das Roamingprofil speichern möchten.
- Erteilen Sie der App die delegierte Berechtigung User.ReadWrite für den angemeldeten Benutzer.
Der Benutzer meldet sich bei der App an und konfiguriert das Aussehen und Verhalten der App. Diese App-Einstellungen sind roamingfähig, der Benutzer erhält also dieselbe Oberfläche, ganz gleich, mit welchem Gerät er sich bei der App anmeldet. Die App ruft Microsoft Graph auf, indem sie die folgende Anforderung ausführt, um die Roamingprofilinformationen zum Ressourcenobjekt des angemeldeten Benutzers hinzuzufügen.
Anforderung
POST https://graph.microsoft.com/v1.0/me/extensions
Content-type: application/json
{
"@odata.type":"microsoft.graph.openTypeExtension",
"extensionName":"com.contoso.roamingSettings",
"theme":"dark",
"color":"purple",
"lang":"Japanese"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new OpenTypeExtension
{
OdataType = "microsoft.graph.openTypeExtension",
ExtensionName = "com.contoso.roamingSettings",
AdditionalData = new Dictionary<string, object>
{
{
"theme" , "dark"
},
{
"color" , "purple"
},
{
"lang" , "Japanese"
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.Extensions.PostAsync(requestBody);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewExtension()
extensionName := "com.contoso.roamingSettings"
requestBody.SetExtensionName(&extensionName)
additionalData := map[string]interface{}{
"theme" : "dark",
"color" : "purple",
"lang" : "Japanese",
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
extensions, err := graphClient.Me().Extensions().Post(context.Background(), requestBody, nil)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OpenTypeExtension extension = new OpenTypeExtension();
extension.setOdataType("microsoft.graph.openTypeExtension");
extension.setExtensionName("com.contoso.roamingSettings");
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("theme", "dark");
additionalData.put("color", "purple");
additionalData.put("lang", "Japanese");
extension.setAdditionalData(additionalData);
Extension result = graphClient.me().extensions().post(extension);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
const options = {
authProvider,
};
const client = Client.init(options);
const extension = {
'@odata.type':'microsoft.graph.openTypeExtension',
extensionName: 'com.contoso.roamingSettings',
theme: 'dark',
color: 'purple',
lang: 'Japanese'
};
await client.api('/me/extensions')
.post(extension);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\OpenTypeExtension;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new OpenTypeExtension();
$requestBody->setOdataType('microsoft.graph.openTypeExtension');
$requestBody->setExtensionName('com.contoso.roamingSettings');
$additionalData = [
'theme' => 'dark',
'color' => 'purple',
'lang' => 'Japanese',
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->me()->extensions()->post($requestBody)->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Import-Module Microsoft.Graph.Users
$params = @{
"@odata.type" = "microsoft.graph.openTypeExtension"
extensionName = "com.contoso.roamingSettings"
theme = "dark"
color = "purple"
lang = "Japanese"
}
# A UPN can also be used as -UserId.
New-MgUserExtension -UserId $userId -BodyParameter $params
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.open_type_extension import OpenTypeExtension
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OpenTypeExtension(
odata_type = "microsoft.graph.openTypeExtension",
extension_name = "com.contoso.roamingSettings",
additional_data = {
"theme" : "dark",
"color" : "purple",
"lang" : "Japanese",
}
)
result = await graph_client.me.extensions.post(request_body)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Antwort
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('376bdbfc-e41f-4082-a8cf-b31731465eeb')/extensions/$entity",
"@odata.type": "#microsoft.graph.openTypeExtension",
"extensionName": "com.contoso.roamingSettings",
"theme": "dark",
"color": "purple",
"lang": "Japanese",
"id": "com.contoso.roamingSettings"
}
Wenn sich der Benutzer von einem anderen Gerät aus bei der App anmeldet, ruft die App Microsoft Graph auf, um seine Profildetails einschließlich der Erweiterungsnavigationseigenschaft abzurufen, die seine Roamingeinstellungen enthält. Diese Daten werden dann verwendet, um die gleiche Benutzererfahrung wie auf dem anderen Gerät bereitzustellen.
Anforderung
GET https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,mobilePhone&$expand=extensions
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "id","displayName","mail","mobilePhone" };
requestConfiguration.QueryParameters.Expand = new string []{ "extensions" };
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestParameters := &graphusers.MeRequestBuilderGetQueryParameters{
Select: [] string {"id","displayName","mail","mobilePhone"},
Expand: [] string {"extensions"},
}
configuration := &graphusers.MeRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
me, err := graphClient.Me().Get(context.Background(), configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User result = graphClient.me().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"id", "displayName", "mail", "mobilePhone"};
requestConfiguration.queryParameters.expand = new String []{"extensions"};
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Me\MeRequestBuilderGetRequestConfiguration;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestConfiguration = new UserItemRequestBuilderGetRequestConfiguration();
$queryParameters = UserItemRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->select = ["id","displayName","mail","mobilePhone"];
$queryParameters->expand = ["extensions"];
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->me()->get($requestConfiguration)->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.me.me_request_builder import MeRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = MeRequestBuilder.MeRequestBuilderGetQueryParameters(
select = ["id","displayName","mail","mobilePhone"],
expand = ["extensions"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.me.get(request_configuration = request_configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Antwort
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,mail,mobilePhone,extensions())/$entity",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET me?$select=signInActivity,accountEnabled",
"id": "376bdbfc-e41f-4082-a8cf-b31731465eeb",
"displayName": "Raul Razo",
"mail": null,
"mobilePhone": null,
"extensions@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('376bdbfc-e41f-4082-a8cf-b31731465eeb')/extensions",
"extensions": [
{
"@odata.type": "#microsoft.graph.openTypeExtension",
"extensionName": "com.contoso.roamingSettings",
"theme": "dark",
"color": "purple",
"lang": "Japanese",
"id": "com.contoso.roamingSettings"
}
]
}
Der Benutzer kann seine Roamingprofilinformationen ändern. Die App ruft Microsoft Graph auf, indem die folgende Abfrage ausgeführt wird. Die Anforderung gibt einen 204 No Content Antwortcode zurück.
Sie müssen alle Eigenschaften in den Anforderungstext einschließen, auch wenn Sie nur eine Teilmenge aktualisieren möchten. Andernfalls entfernt Microsoft Graph die nicht angegebenen Eigenschaften. Um Daten zu löschen, aber eine Eigenschaft beizubehalten, legen Sie den Eigenschaftswert auf fest null.
PATCH https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings
Content-type: application/json
{
"theme":"light",
"color":"purple",
"lang":"Swahili"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new Extension
{
AdditionalData = new Dictionary<string, object>
{
{
"theme" , "light"
},
{
"color" , "purple"
},
{
"lang" , "Swahili"
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.Extensions["{extension-id}"].PatchAsync(requestBody);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewExtension()
additionalData := map[string]interface{}{
"theme" : "light",
"color" : "purple",
"lang" : "Swahili",
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
extensions, err := graphClient.Me().Extensions().ByExtensionId("extension-id").Patch(context.Background(), requestBody, nil)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Extension extension = new Extension();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("theme", "light");
additionalData.put("color", "purple");
additionalData.put("lang", "Swahili");
extension.setAdditionalData(additionalData);
Extension result = graphClient.me().extensions().byExtensionId("{extension-id}").patch(extension);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
const options = {
authProvider,
};
const client = Client.init(options);
const extension = {
theme: 'light',
color: 'purple',
lang: 'Swahili'
};
await client.api('/me/extensions/com.contoso.roamingSettings')
.update(extension);
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\Extension;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new Extension();
$additionalData = [
'theme' => 'light',
'color' => 'purple',
'lang' => 'Swahili',
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->me()->extensions()->byExtensionId('extension-id')->patch($requestBody)->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Import-Module Microsoft.Graph.Users
$params = @{
theme = "light"
color = "purple"
lang = "Swahili"
}
# A UPN can also be used as -UserId.
Update-MgUserExtension -UserId $userId -ExtensionId $extensionId -BodyParameter $params
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.extension import Extension
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Extension(
additional_data = {
"theme" : "light",
"color" : "purple",
"lang" : "Swahili",
}
)
result = await graph_client.me.extensions.by_extension_id('extension-id').patch(request_body)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Schritt 4. Löschen des Roamingprofils eines Benutzers
Der Benutzer entscheidet, dass er kein Roamingprofil mehr möchte. Um die Erweiterungseigenschaft zu löschen, ruft die App Microsoft Graph auf, indem sie die folgende Anforderung ausführt. Die Anforderung gibt einen 204 No Content Antwortcode zurück.
DELETE https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Me.Extensions["{extension-id}"].DeleteAsync();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.Me().Extensions().ByExtensionId("extension-id").Delete(context.Background(), nil)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
graphClient.me().extensions().byExtensionId("{extension-id}").delete();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$graphServiceClient->me()->extensions()->byExtensionId('extension-id')->delete()->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.me.extensions.by_extension_id('extension-id').delete()
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Verwandte Inhalte