我使用OAuth机制为SharePoint Online服务器生成了访问令牌。我使用这个令牌使用CSOM创建ClientContext。虽然我能够无缝访问所有站点、库和文件夹,但是在从SharePoint Online下载文件时出现错误。
远程服务器返回错误:(401) 未经授权。
以下是我用于文件下载的代码:
var clientContext = TokenHelper.GetClientContextWithAccessToken("https://adventurer.sharepoint.com/Subsite1", accessToken);
var list = clientContext.Web.Lists.GetByTitle("SubSite 1 Library 1");
string vquery = @"<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='UniqueId' /><Value Type='Lookup'>" + "6718053d-a785-489c-877f-5a4b88dcb2a7" + "</Value></Eq></Where></Query></View>";
CamlQuery query = new CamlQuery();
query.ViewXml = vquery;
var listItems = list.GetItems(query);
clientContext.Load(listItems, items => items.Take(1).Include(item => item.File));
clientContext.ExecuteQuery();
var fileRef = listItems[0].File.ServerRelativeUrl;
var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, fileRef);
我不理解这个错误的根本原因,因为我正在使用正确的访问令牌传递客户端上下文。我想知道OpenBinaryDirect是否有与访问令牌一起使用的限制? 如果没有,那么上面的代码有什么问题?是否有其他替代方法可以使用访问令牌进行下载?