(委派的权限授予) 创建 oAuth2PermissionGrant
命名空间:microsoft.graph
创建由 oAuth2PermissionGrant 对象表示的委派权限授予。
委托的权限授权授权客户端服务主体 (表示客户端应用程序) ,以代表已登录用户访问代表 API) 的资源服务主体 (访问受授予的委派权限限制的访问级别。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
DelegatedPermissionGrant.ReadWrite.All、Directory.ReadWrite.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用程序 |
DelegatedPermissionGrant.ReadWrite.All、Directory.ReadWrite.All |
HTTP 请求
POST /oauth2PermissionGrants
| 名称 |
类型 |
说明 |
| Authorization |
string |
Bearer {token}。必需。 |
请求正文
在请求正文中,提供 oAuth2PermissionGrant 对象的 JSON 表示形式。
响应
如果成功,此方法在响应正文中返回 200 系列响应代码和新的 oAuth2PermissionGrant 对象。 下表显示了创建 oAuth2PermissionGrant 时所需的属性。
| 属性 |
类型 |
说明 |
| clientId |
字符串 |
应用程序的客户端 服务主体的 ID,该应用程序有权在访问 API 时代表已登录用户执行操作。 必需。 |
| consentType |
String |
指示是否授予客户端应用程序模拟所有用户或仅特定用户的授权。 AllPrincipals 指示授权模拟所有用户。 主体 指示授权模拟特定用户。 管理员可以代表所有用户授予同意。 在某些情况下,对于某些委派的权限,非管理员用户可能有权代表自己同意。 必需。 |
| principalId |
String |
当 consentType 为 主体 时,客户端有权访问资源的 用户 ID。 如果 consentType 为 AllPrincipals ,则此值为 null。 如果 consentType 是主体,则为必需 。 |
| resourceId |
String |
有权访问权限的资源 服务主体的 ID。 这将标识客户端有权代表已登录用户尝试调用的 API。 |
| scope |
String |
委托权限的声明值的空格分隔列表,应包含在资源应用程序的访问令牌中, (API) 。 例如,openid User.Read GroupMember.Read.All。 每个声明值应与 API 定义的委托权限之一的 值 字段匹配,该权限在资源 服务主体的 oauth2PermissionScopes 属性中列出。 |
示例
请求
POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants
Content-Type: application/json
{
"clientId": "ef969797-201d-4f6b-960c-e9ed5f31dab5",
"consentType": "AllPrincipals",
"resourceId": "943603e4-e787-4fe9-93d1-e30f749aae39",
"scope": "DelegatedPermissionGrant.ReadWrite.All"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var oAuth2PermissionGrant = new OAuth2PermissionGrant
{
ClientId = "ef969797-201d-4f6b-960c-e9ed5f31dab5",
ConsentType = "AllPrincipals",
ResourceId = "943603e4-e787-4fe9-93d1-e30f749aae39",
Scope = "DelegatedPermissionGrant.ReadWrite.All"
};
await graphClient.Oauth2PermissionGrants
.Request()
.AddAsync(oAuth2PermissionGrant);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
const options = {
authProvider,
};
const client = Client.init(options);
const oAuth2PermissionGrant = {
clientId: 'ef969797-201d-4f6b-960c-e9ed5f31dab5',
consentType: 'AllPrincipals',
resourceId: '943603e4-e787-4fe9-93d1-e30f749aae39',
scope: 'DelegatedPermissionGrant.ReadWrite.All'
};
await client.api('/oauth2PermissionGrants')
.post(oAuth2PermissionGrant);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/oauth2PermissionGrants"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphOAuth2PermissionGrant *oAuth2PermissionGrant = [[MSGraphOAuth2PermissionGrant alloc] init];
[oAuth2PermissionGrant setClientId:@"ef969797-201d-4f6b-960c-e9ed5f31dab5"];
[oAuth2PermissionGrant setConsentType:@"AllPrincipals"];
[oAuth2PermissionGrant setResourceId:@"943603e4-e787-4fe9-93d1-e30f749aae39"];
[oAuth2PermissionGrant setScope:@"DelegatedPermissionGrant.ReadWrite.All"];
NSError *error;
NSData *oAuth2PermissionGrantData = [oAuth2PermissionGrant getSerializedDataWithError:&error];
[urlRequest setHTTPBody:oAuth2PermissionGrantData];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
OAuth2PermissionGrant oAuth2PermissionGrant = new OAuth2PermissionGrant();
oAuth2PermissionGrant.clientId = "ef969797-201d-4f6b-960c-e9ed5f31dab5";
oAuth2PermissionGrant.consentType = "AllPrincipals";
oAuth2PermissionGrant.resourceId = "943603e4-e787-4fe9-93d1-e30f749aae39";
oAuth2PermissionGrant.scope = "DelegatedPermissionGrant.ReadWrite.All";
graphClient.oauth2PermissionGrants()
.buildRequest()
.post(oAuth2PermissionGrant);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewOAuth2PermissionGrant()
clientId := "ef969797-201d-4f6b-960c-e9ed5f31dab5"
requestBody.SetClientId(&clientId)
consentType := "AllPrincipals"
requestBody.SetConsentType(&consentType)
resourceId := "943603e4-e787-4fe9-93d1-e30f749aae39"
requestBody.SetResourceId(&resourceId)
scope := "DelegatedPermissionGrant.ReadWrite.All"
requestBody.SetScope(&scope)
result, err := graphClient.Oauth2PermissionGrants().Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
Import-Module Microsoft.Graph.Identity.SignIns
$params = @{
ClientId = "ef969797-201d-4f6b-960c-e9ed5f31dab5"
ConsentType = "AllPrincipals"
ResourceId = "943603e4-e787-4fe9-93d1-e30f749aae39"
Scope = "DelegatedPermissionGrant.ReadWrite.All"
}
New-MgOauth2PermissionGrant -BodyParameter $params
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
响应
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#oauth2PermissionGrants/$entity",
"clientId": "ef969797-201d-4f6b-960c-e9ed5f31dab5",
"consentType": "AllPrincipals",
"id": "l5eW7x0ga0-WDOntXzHateQDNpSH5-lPk9HjD3Sarjk",
"principalId": null,
"resourceId": "943603e4-e787-4fe9-93d1-e30f749aae39",
"scope": "DelegatedPermissionGrant.ReadWrite.All"
}