Aracılığıyla paylaş


İş Ortağı Merkezi API'leri aracılığıyla kullanıcıya lisans atama

Müşteri kullanıcısına lisans atama.

Önkoşullar

  • İş Ortağı Merkezi kimlik doğrulamasında açıklandığı gibi kimlik bilgileri. Bu senaryo yalnızca App+User kimlik bilgileriyle kimlik doğrulamayı destekler.

  • Müşteri kullanıcı tanımlayıcısı. Bu kimlik, lisansın atandığı kullanıcıyı tanımlar.

  • Lisans için ürünü tanımlayan bir ürün SKU tanımlayıcısı.

GDAP rolleri

Aşağıdaki GDAP rollerinden en az birine ihtiyacınız vardır:

  • Lisans Yönetici istrator
  • Kullanıcı Yöneticisi
  • Dizin Yazarları

Kod aracılığıyla lisans atama

Kullanıcıya lisans atadığınızda, müşterinin abone olunan SKU'lar koleksiyonundan seçim yapmanız gerekir. Ardından, atamak istediğiniz ürünleri tanımladıktan sonra, atamaları yapmak için her ürünün ürün SKU kimliğini almanız gerekir. Her SubscribedSku örneği, ProductSku nesnesine başvurabileceğiniz ve kimliği alabileceğiniz bir ProductSku özelliği içerir.

Kod aracılığıyla lisans atama adımları şunlardır:

  1. LicenseAssignment nesnesinin örneğini oluşturma. Atanacak ürün SKU'su ve hizmet planlarını belirtmek için bu nesneyi kullanırsınız.

    LicenseAssignment license = new LicenseAssignment();
    
  2. Aşağıda gösterildiği gibi nesne özelliklerini doldurun. Bu kod, ürün SKU kimliğine zaten sahip olduğunuzu ve tüm kullanılabilir hizmet planlarının atanacağını (yani hiçbiri hariç tutulmayacak) varsayar.

    license.SkuId = selectedProductSkuId;
    license.ExcludedPlans = null;
    
  3. Ürün SKU kimliğiniz yoksa, abone olunan SKU'ların koleksiyonunu almanız ve bunlardan birinden ürün SKU kimliğini almanız gerekir. Ürün SKU'su adını biliyorsanız bir örnek aşağıda verilmiştir.

    var customerSubscribedSkus = partnerOperations.Customers.ById(selectedCustomerId).SubscribedSkus.Get();
    var sku = customerSubscribedSkus.Items.Where(n => n.ProductSku.Name == "Office 365 Enterprise E3").First();
    license.SkuId = sku.ProductSku.Id;
    license.ExcludedPlans = null;
    
  4. Ardından, LicenseAssignment türünde yeni bir liste oluşturup lisans nesnesini ekleyin. Her birini tek tek listeye ekleyerek birden fazla lisans atayabilirsiniz. Bu listeye dahil edilen lisanslar aynı lisans grubundan olmalıdır.

    List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
    licenseList.Add(license);
    
  5. Bir LicenseUpdate örneği oluşturun ve lisans atamalarının listesini LicensesToAssign özelliğine atayın.

    LicenseUpdate updateLicense = new LicenseUpdate();
    updateLicense.LicensesToAssign = licenseList;
    
  6. Create veya CreateAsync yöntemini çağırın ve lisansları atamak için aşağıda gösterildiği gibi lisans güncelleştirme nesnesini geçirin.

    var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);
    

C#

Müşteri kullanıcısına lisans atamak için önce bir LicenseAssignment nesnesi örneği oluşturup Skuid ve ExcludedPlans özelliklerini doldurun. Atanacak ürün SKU'su ve hariç tutulacak hizmet planlarını belirtmek için bu nesneyi kullanırsınız. Ardından, LicenseAssignment türünde yeni bir liste örneği oluşturup lisans nesnesini listeye ekleyin. Ardından bir LicenseUpdate örneği oluşturun ve lisans atamalarının listesini LicensesToAssign özelliğine atayın.

Ardından, müşteri kimliğini belirlemek için IAggregatePartner.Customers.ById yöntemini ve kullanıcıyı tanımlamak için kullanıcı kimliğiyle Users.ById yöntemini kullanın. Ardından License Güncelleştirmeler özelliğinden müşteri kullanıcı lisansı güncelleştirme işlemlerine yönelik bir arabirim alın.

Son olarak Create veya CreateAsync yöntemini çağırın ve lisansı atamak için lisans güncelleştirme nesnesini geçirin.

// IAggregatePartner partnerOperations;
// string selectedCustomerUserId;
// string selectedCustomerId;
// string selectedProductSkuId;

// Instantiate and populate a LicenseAssignment object.
LicenseAssignment license = new LicenseAssignment();
license.SkuId = selectedProductSkuId;
license.ExcludedPlans = null;

// Instantiate a list of licenses to assign and add the license to it.
List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
licenseList.Add(license);

// Instantiate a LicenseUpdate object and add the list of licenses to assign.
LicenseUpdate updateLicense = new LicenseUpdate();
updateLicense.LicensesToAssign = licenseList;

// Update the user licenses.
var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);

Örnek: Konsol test uygulaması. Proje: İş Ortağı Merkezi SDK Örnekleri Sınıfı: CustomerUserAssignLicenses.cs

REST isteği

İstek söz dizimi

Metot İstek URI'si
POST {baseURL}/v1/customers/{customer-id}/users/{user-id}/licenseupdates HTTP/1.1

URI parametreleri

Müşteriyi ve kullanıcıyı tanımlamak için aşağıdaki yol parametrelerini kullanın.

Adı Tür Zorunlu Açıklama
customer-id string Yes Müşteriyi tanımlayan GUID biçimli kimlik.
kullanıcı kimliği string Yes Kullanıcıyı tanımlayan GUID biçimli kimlik.

İstek üst bilgileri

Daha fazla bilgi için bkz . İş Ortağı Merkezi REST üst bilgileri.

Request body

İstek gövdesine atanacak lisansları belirten bir LicenseUpdate kaynağı ekleyin.

İstek örneği

POST https://api.partnercenter.microsoft.com/v1/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/users/554526aa-cf5e-46fa-95df-98dbc55d8a1e/licenseupdates HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 183
Expect: 100-continue

{
    "LicensesToAssign": [{
            "ExcludedPlans": null,
            "SkuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "LicensesToRemove": null,
    "LicenseWarnings": null,
    "Attributes": {
        "ObjectType": "LicenseUpdate"
    }
}

Önemli

Haziran 2023 itibarıyla en son İş Ortağı Merkezi .NET SDK sürümü 3.4.0 arşivlenmiştir. SDK sürümünü, yararlı bilgiler içeren bir benioku dosyasıyla birlikte GitHub'dan indirebilirsiniz.

İş ortaklarının İş Ortağı Merkezi REST API'lerini kullanmaya devam etmesi teşvik edilir.

REST yanıtı

Başarılı olursa, 201 HTTP yanıt durumu kodu döndürülür ve yanıt gövdesi lisans bilgilerini içeren bir LicenseUpdate kaynağı içerir.

Yanıt başarısı ve hata kodları

Her yanıt, başarılı veya başarısız olduğunu belirten bir HTTP durum kodu ve ek hata ayıklama bilgileriyle birlikte gelir. Bu kodu, hata türünü ve ek parametreleri okumak için bir ağ izleme aracı kullanın. Tam liste için bkz . İş Ortağı Merkezi REST hata kodları.

Yanıt örneği (başarılı)

HTTP/1.1 201 Created
Content-Length: 139
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CV: 5AnzcZQrvUqCq3kd.0
MS-ServerId: 030020525
Date: Thu, 20 Apr 2017 21:50:39 GMT

{
    "licensesToAssign": [{
            "skuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "licenseWarnings": [],
    "attributes": {
        "objectType": "LicenseUpdate"
    }
}

Yanıt örneği (lisans kullanılamıyor)

HTTP/1.1 400 Bad Request
Content-Length: 341
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
MS-RequestId: f4f3b748-8b22-4d07-a5a1-dceb32824192
MS-CV: 5npA0K22CUmWPOzB.0
MS-ServerId: 102030524
Date: Thu, 20 Apr 2017 22:12:36 GMT

{
    "code": 60012,
    "description": "We are sorry, it looks like you have run out of licenses. Buy more licenses, and then try again.",
    "data": ["LicenseQuotaExceededException : Subscription with Account 0c39d6d5-c70d-4c55-bc02-f620844f3fd1 and SKU f8a1db68-be16-40ed-86d5-cb42ce701560 does not have any available licenses left."],
    "source": "PartnerFD"
}

Yanıt örneği (geçersiz belirteç)

HTTP/1.1 400 Bad Request
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c5359db2-fb21-485c-90b1-0a2c3b484783
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT

{
    "code": 900316,
    "description": "Partner token is not allowed in license management calls. Please call with Partner Access Token. To learn more, see https://learn.microsoft.com/partner-center/developer/enable-secure-app-model#get-access-token",
    "source": "PartnerFD"
}

Yanıt örneği (Koşullu Erişim İlkesi Sorunu)

HTTP/1.1 403 Forbidden
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c5359db2-fb21-485c-90b1-0a2c3b484783
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT

{
    "code": 900309,
    "description": "Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. Learn more at https://learn.microsoft.com/azure/active-directory/conditional-access/concept-conditional-access-users-groups.",
    "source": "PartnerFD"
}