I am trying to remove an eventreceiver from the clientContext.Web.EventReceivers
by using DeleteObject() but I am getting Access Denied exception
In my appmanifest.xml I already granted full control to the app
Within my AppEventReceiver I have:
if (properties.EventType == SPRemoteEventType.AppUninstalling)
{
SharePointContextToken contextToken = TokenHelper.ReadAndValidateContextToken(properties.ContextToken, OperationContext.Current.IncomingMessageHeaders.To.Host);string appOnlyAccessToken = TokenHelper.GetAppOnlyAccessToken(contextToken.TargetPrincipalName, properties.AppEventProperties.HostWebFullUrl.Authority, contextToken.Realm).AccessToken;
//string appOnlyAccessToken = TokenHelper.GetAppOnlyAccessToken(SHAREPOINT_PID, properties.AppEventProperties.HostWebFullUrl.Authority, TokenHelper.GetRealmFromTargetUrl(properties.AppEventProperties.HostWebFullUrl)).AccessToken;
using (ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(properties.AppEventProperties.HostWebFullUrl.ToString(), appOnlyAccessToken))
{
try
{
clientContext.Load(clientContext.Web);
clientContext.Load(clientContext.Web.EventReceivers);
clientContext.Load(clientContext.Web, web => web.Title);
clientContext.Load(clientContext.Web, web => web.CurrentUser.LoginName);
clientContext.ExecuteQuery();
//IEnumerable<EventReceiverDefinition> receivers = clientContext.LoadQuery(clientContext.Web.EventReceivers.Where(e => e.ReceiverName == "GroupUserAddedRER"));
//clientContext.ExecuteQuery();
EventReceiverDefinitionCollection receivers = clientContext.Web.EventReceivers;
List<EventReceiverDefinition> receiversToDelete = new List<EventReceiverDefinition>();
foreach (var rec in receivers)
{
if (rec.ReceiverName == "GroupUserAddedRER")
receiversToDelete.Add(rec);
}
foreach (var recToDelete in receiversToDelete)
{
recToDelete.DeleteObject();
}
clientContext.ExecuteQuery();
}
catch (Exception)
{
result.Status = SPRemoteEventServiceStatus.CancelNoError;
}
}
}