2017-01-06 3 views
0

私は店にリリースしたいと考えているSPアプリケーションを持っています。SharePointプロバイダがホストするアプリケーションのライセンスチェック

最後に私が実装したいのは、サーバー側(C#)で行っているライセンスチェックです。

私はそれは私が最初に私はこのコードをどうしようとしていますSharePointの、から現在のライセンスを取得する必要がこれを行うことが見つかりました:リモートサーバー:しかし、このコードを実行

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

は私にエラーを与えますエラーを返しました:(403)禁止されています。

これは、同じエラーが発生しても、アプリに与えられたさまざまな権限(ウェブ/サイト/テナントのフルコントロールまで)で実行しようとしました。

誰かが分からないことを知っていますか?他の種類のリクエストの結果を返すので、アプリケーションカタログから製品IDを取得しています。

答えて

0

clientContext.Webをロードする必要がありますか?以前使用していたコードの1つをチェックしていましたが、それは単に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

いいえ、私はライセンスのコレクションを返すようにしました。 最近のいくつかの調整後にコンテキストが正しく初期化されておらず、読み込みWeb権限がライセンスを読み込むのに十分だと思われます。

私が今見ているのは、私が手に入れているライセンスコレクションが空であるということです。 私のアプリはまだストアにはなく、私はアプリカタログにしかデプロイしていませんが、実際のライセンスを返すためにはストアに入れておく必要がありますか? もし最善の方法があれば、私は本当に未完成のアプリをリリースしたくありません。

更新:私はこのプロジェクトからSPAppLicenseHelper.GenerateTestTokenを使用してテストライセンスをアップロードすることができました:https://code.msdn.microsoft.com/officeapps/SharePoint-2013-Import-f5f680a6/

関連する問題