2017-07-20 11 views
1

アップロードセッションを作成できますが、その後すぐに削除することはできません。 403 Forbiddenエラーが表示されます。アップロードセッションを削除できません

Transfer-Encoding: chunked 
X-SharePointHealthScore: 0 
X-Forms_Based_Auth_Required: https://REDACTED.sharepoint.com/_forms/default.aspx?ReturnUrl=/_layouts/15/error.aspx&Source=%2f_vti_bin%2fclient.svc%2fv2.0%2fdrives%2fREDACTED%2fuploadSession%3fguid%3d%27REDACTED%27%26path%3d%27%7etmpE6_test.txt%27%26overwrite%3dFalse%26rename%3dTrue 
X-Forms_Based_Auth_Return_Url: https://REDACTED.sharepoint.com/_layouts/15/error.aspx 
X-MSDAVEXT_Error: 917656; Access+denied.+Before+opening+files+in+this+location%2c+you+must+first+browse+to+the+web+site+and+select+the+option+to+login+automatically. 
ODATA-VERSION: 4.0 
X-IDCRL_AUTH_PARAMS_V1: IDCRL Type="BPOSIDCRL", EndPoint="/personal/REDACTED/_vti_bin/idcrl.svc/", RootDomain="sharepoint.com", Policy="MBI" 
SPRequestGuid: REDACTED 
request-id: REDACTED 
Strict-Transport-Security: max-age=31536000 
X-FRAME-OPTIONS: SAMEORIGIN 
MicrosoftSharePointTeamServices: 16.0.0.6712 
X-Content-Type-Options: nosniff 
X-MS-InvokeApp: 1; RequireReadOnly 
X-MSEdge-Ref: Ref A: REDACTED Ref B: REDACTED Ref C: 2017-07-20T14:31:00Z 
Cache-Control: private, max-age=0 
Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8 
Date: Thu, 20 Jul 2017 14:31:00 GMT 
Expires: Wed, 05 Jul 2017 14:31:00 GMT 
Last-Modified: Thu, 20 Jul 2017 14:31:00 GMT 
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI" 
Server: Microsoft-IIS/10.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 

ここでは、同じ結果を得るコードを削除しています。

using System; 
using System.Net; 
using System.Web.Script.Serialization; 

namespace OneDriveUploadSession 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      JavaScriptSerializer jss = new JavaScriptSerializer(); 
      string strTokenURL = "https://login.microsoftonline.com/REDACTED.onmicrosoft.com/oauth2/v2.0/token"; 
      string strAppSecret = "client_id=REDACTED&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=REDACTED&grant_type=client_credentials"; 
      string strUserName = "REDACTED"; 


      //Get Access Token 
      WebClient wcAccessToken = new WebClient(); 

      wcAccessToken.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 

      string strJSONAccessToken = wcAccessToken.UploadString(strTokenURL, strAppSecret); 
      dynamic dynJSONAccessToken = jss.DeserializeObject(strJSONAccessToken); 
      string strAccessToken = dynJSONAccessToken["access_token"].Replace(Environment.NewLine, ""); 


      //Get Drive ID for specified user 
      WebClient wcDriveID = new WebClient(); 

      wcDriveID.Headers.Add("Authorization", "Bearer " + strAccessToken); 

      string strDriveJSON = wcDriveID.DownloadString("https://graph.microsoft.com/v1.0/users/" + strUserName + "/drives"); 
      dynamic dynDriveJSON = jss.DeserializeObject(strDriveJSON); 
      string strDriveID = dynDriveJSON["value"][0]["id"]; 


      //Create Upload Session 
      WebClient wcCreateUploadSession = new WebClient(); 
      string strCreateUploadSessionURL = "https://graph.microsoft.com/v1.0/drives/" + strDriveID + "/root:/test.txt:/createUploadSession"; 

      wcCreateUploadSession.Headers.Add("Authorization", "Bearer " + strAccessToken); 
      wcCreateUploadSession.Headers.Add("Content-Type", "application/json"); 

      string strJSONCreateUploadSession = wcCreateUploadSession.UploadString(strCreateUploadSessionURL, "POST", "{\"item\": {\"@microsoft.graph.conflictBehavior\": \"rename\"}}"); 
      dynamic dynJSONCreateUploadSession = jss.DeserializeObject(strJSONCreateUploadSession); 
      string strUploadSessionURL = dynJSONCreateUploadSession["uploadUrl"]; 


      //Delete Upload Session 
      WebRequest wrDeleteUploadSession = WebRequest.Create(strUploadSessionURL); 

      wrDeleteUploadSession.Method = "DELETE"; 
      wrDeleteUploadSession.GetRequestStream(); 
      wrDeleteUploadSession.GetResponse(); 
     } 
    } 
} 
+0

削除する前にコンテンツをアップロードしようとしましたか?ここでの問題は、データを一度も送信していないので、削除するものがないということです。 –

+1

はい。私は同じエラーが発生し、コンテンツはアップロードされません。トラブルシューティングをより簡単にするためにコードを削除しました。しかし、削除するものがあります。ユーザーのOneDriveのその場所に一時ファイルが作成されます。 deleteメソッドは、そのファイルを削除する必要があります。 –

+1

私はこれがうまくいかない理由だと思う。 https://github.com/microsoftgraph/microsoft-graph-docs/commit/98b5a9d94d17ae25765d0605b978f0c2ddff5cc9私のコードが7月7日に魔法のように作業を始めてから、7月11日にもう一度やり直してしまったので、彼らは少し前進したようです。 –

答えて

1

お客様のコードに基づいて、クライアントの資格情報フロー(別名アプリのみ)を使用しています。このシナリオでは、再開可能なアップロードはサポートされていません。 documentation

注:Files.ReadWrite.Allアプリケーションのアクセス許可は、このAPIではまだサポートされていません。すぐに完全なサポートが予定されています。

この時点では、再開可能なアップロードは委任されたアクセス許可を使用してのみサポートされます。

関連する問題