SharePoint 提供程序托管的应用程序许可证检查



我有一个SP应用程序,我希望将其发布到商店。

我想在其中实现的最后一件事是许可证检查,我在服务器端(C#)上执行。

我发现要做到这一点,我需要首先从 SharePoint 检索当前许可证,我正在尝试使用以下代码执行此操作:

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

但是,执行此代码会给我一个错误:远程服务器返回错误:(403) 禁止。

我尝试使用授予应用程序的各种权限(直到完全控制网站/站点/租户)运行它,但仍然出现相同的错误。

有谁知道缺少什么?,我正在从应用程序目录中获取产品ID,上下文似乎没问题,因为它返回其他类型的请求的结果。

你需要加载clientContext.Web吗?我正在检查我之前使用过的代码之一,它只运行客户端上下文.执行查询();

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);
}

好的,我已经让它返回许可证集合。在我最近的一些调整之后,上下文似乎初始化不正确,并且读取Web权限似乎足以加载许可证。

但是我现在看到的是我得到的许可证集合是空的。我的应用尚未在商店中,我仅将其部署到我的应用目录中,是否需要在应用商店中才能返回实际许可证?如果是这样,最好的方法是什么,我真的不想发布一个未完成的应用程序。

更新:我能够使用SPAppLicenseHelper.GenerateTestToken从这个项目上传测试许可证:https://code.msdn.microsoft.com/officeapps/SharePoint-2013-Import-f5f680a6/

相关内容

  • 没有找到相关文章

最新更新