MVA コースの「Building Blocks and Services of the SharePoint Platform」の「Deep Dive into SharePoint Lists for Data Storage」というタイトルのモジュール 2 (約 45 分) で、Ted Pattison は、コンソール アプリを使用して SharePoint 上にリストを作成するデモを行いました。オンライン サイト。コースはhttp://www.microsoftvirtualacademy.com/training-courses/deep-dive-building-blocks-and-services-of-sharepointにあります。
私の環境でも同じことをしようとしていますが、問題があります。
デモでは、_layouts/15/AppRegNew.aspx に移動して、新しいアプリをアプリ レジストリに登録しました。デモでは、ページの上部に「アプリの種類」ラジオ ボタンのリストがあり、「Web サーバーで実行されているアプリ」と「クライアント マシンで実行されているアプリ」のオプションがありました。私のサイトでこのページにアクセスすると、そのようなラジオ ボタン リストはありません。また、デモでは、Ted はリダイレクト URL を空白のままにしました。私のサイトでは必須です:
したがって、これを乗り越えるために、自分のサイトの URL ( https://mydomain.sharepoint.com/sites/test ) を入力しました。アプリ ID が正常に作成されました:
次に、_layouts/15/AppInv.aspx に移動して、アプリのセキュリティを確保しました。アプリに Web への読み取りアクセスを許可するために、CAML に貼り付けました。
<AppPermissionRequests>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" />
</AppPermissionRequests>
次に、[信頼する] をクリックしてアプリを信頼します。
次に、アプリ登録の値を app.config にコピーしました。
<add key="targetSiteUrl" value="https://xxxxx.sharepoint.com/sites/test"/>
<add key="clientId" value="bf4c37ef-9202-41ba-8430-3983cba26285"/>
<add key="clientSecret" value="nKGefHSvT69Ls2rwq1AIVyyHkIwlBzT9UkpbJMUcIbw="/>
<add key="deleteOnly" value="false"/>
次に、デモの内容に基づいてコードを作成し、Web タイトルを取得しました。
static void Main(string[] args)
{
string siteUrl = ConfigurationManager.AppSettings["targetSiteUrl"];
bool deleteOnly = ConfigurationManager.AppSettings["deleteOnly"].Equals("true");
Uri siteUri = new Uri(siteUrl);
string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);
var accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal,
siteUri.Authority, realm).AccessToken;
using (var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUrl, accessToken)) {
var web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
Console.WriteLine(web.Title);
}
}
上記のコードはレルムとアクセス トークンを取得し、clientContext を正常に作成しますが、executeQuery を実行すると、常にエラー Microsoft.SharePoint.Client.ServerUnauthorizedAccessException が発生します。アプリ ID に Web、サイト コレクション、およびテナントのフル コントロールを与えようとしましたが、それでも同じエラーが発生します。
コンソール アプリに自分のサイトへの更新アクセスを許可するにはどうすればよいですか?