2017-01-06 2 views
0

У меня есть приложение SP, которое я надеюсь выпустить в магазин.Проверка лицензии на приложение для поставщика SharePoint

Последнее, что я хочу реализовать в нем, это проверка лицензии, которую я делаю на стороне сервера (C#).

я обнаружил, что для этого мне нужно сначала получить текущие лицензии от SharePoint, которые я пытаюсь сделать с этим кодом:

  ClientResult<AppLicenseCollection> licenseCollection = Utility.GetAppLicenseInformation(clientContext, productId); 
      clientContext.Load(clientContext.Web); 
      clientContext.ExecuteQuery(); 

Однако выполнение этого кода дает мне ошибку: Удаленный сервер Ошибка: (403) Запрещено.

Я попытался использовать это с различными разрешениями, предоставляемыми приложению (вплоть до полного контроля над веб-сайтом/арендатором), все еще с той же ошибкой.

Кто-нибудь знает, чего не хватает ?, Я беру идентификатор продукта из каталога приложений, и контекст выглядит нормально, так как он возвращает результаты для других типов запросов.

ответ

0

Вам нужно загрузить clientContext.Web? Я проверял один из кодов, которые я использовал ранее, и он работал только с запуском clientContext.ExecuteQuery();

try 
{ 
var contextToken = TokenHelper.GetContextTokenFromRequest(Page.Request); 
var hostWeb = Page.Request["SPHostUrl"]; 
var appWeb = Page.Request["SPAppWebUrl"]; 
using (var clientContext = 
TokenHelper.GetClientContextWithContextToken(
hostWeb, contextToken, Request.Url.Authority)) 
{ 
ClientResult<AppLicenseCollection> licenses = 
Microsoft.SharePoint.Client.Utilities.Utility. 
GetAppLicenseInformation(clientContext, _productID); 

clientContext.ExecuteQuery(); 

if (licenses.Value.Count == 0) 
    throw new InvalidOperationException("No license"); 
string licenseString = licenses.Value[0].RawXMLLicenseToken; 
} 
} 
catch (Exception ex) 
{ 
Response.Write("Licensing failed: " + ex.Message); 
} 
+0

что _productID? –

0

Хорошо, у меня есть возврат коллекции лицензий. Похоже, что контекст был некорректно инициализирован после некоторых моих недавних настроек и разрешений «Чтение в Интернете», по-видимому, достаточно для загрузки лицензий.

Однако то, что я вижу сейчас, заключается в том, что коллекция лицензий, которую я получаю, пуста. Мое приложение еще не в магазине, и я только развернул его в своем каталоге приложений, нужно ли его хранить в магазине, чтобы вернуть действительную лицензию? Если да, то какой лучший путь вперед, я действительно не хочу выпускать незавершенное приложение.

Update: Я был в состоянии загрузить лицензию тест с использованием SPAppLicenseHelper.GenerateTestToken этого проекта: https://code.msdn.microsoft.com/officeapps/SharePoint-2013-Import-f5f680a6/

Смежные вопросы