- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就这么简单:
用于身份验证的 OAuth 协议(protocol)
列出 documentLibrary 中的文件并从列表中 check out 文件
用 JavaScript 编写
我已经为此苦苦挣扎了几天,但到目前为止还没有这样的运气。
检查选项 1 - 图形 API:
https://learn.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_checkout
即使它是 OneDrive API,它也应该与 SharePoint doc.libraries 一起运行 - RESt API
部分:“REST API 在 OneDrive、OneDrive for Business、SharePoint 文档之间共享图书馆和办公室组,以允许...“
结果呢?在这里查看:Sharepoint `Unsupported segment type` when checkin/chekout file
好消息,OAuth 的作用就像一个魅力 - 我从 https://apps.dev.microsoft.com/ 获得了客户端 ID ,身份验证端点:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token
结帐选项 2 - Sharepoint 插件
https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-folders-and-files-with-rest
url: http://site url/_api/web/GetFileByServerRelativeUrl('/Folder Name/file name')/CheckOut(),
method: POST
headers:
Authorization: "Bearer " + accessToken
X-RequestDigest: form digest value
这个工作完美,但在这种情况下,OAuth 是问题......
但是,在此过程中,涉及 Microsoft Azure 访问控制服务 (ACS),该服务(根据此链接 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-acs-migration)即将关闭。
解决方案似乎是切换到 Azure 应用程序( https://portal.azure.com -> Azure Active Directory -> 应用程序注册)。无论如何,使用这些设置的访问 token 与 Sharepoint API 所需的访问 token 不兼容,例如:
https://mindjet2.sharepoint.com/_api/contextinfo
抛出异常'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException'
我的图表 API 做错了什么?使用 OAuth 验证 Sharepoint API 的正确方法是什么?
最佳答案
在SharePoint加载项中,我们可以使用跨域库来实现。
检查下面的代码:
'use strict';
var hostweburl;
var appweburl;
// This code runs when the DOM is ready and creates a context object which is
// needed to use the SharePoint object model
$(document).ready(function () {
//Get the URI decoded URLs.
hostweburl =
decodeURIComponent(
getQueryStringParameter("SPHostUrl"));
appweburl =
decodeURIComponent(
getQueryStringParameter("SPAppWebUrl"));
// Resources are in URLs in the form:
// web_url/_layouts/15/resource
var scriptbase = hostweburl + "/_layouts/15/";
// Load the js file and continue to load the page with information about the list top level folders.
// SP.RequestExecutor.js to make cross-domain requests
// Load the js files and continue to the successHandler
$.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);
});
// Function to prepare and issue the request to get
// SharePoint data
function execCrossDomainRequest() {
// executor: The RequestExecutor object
// Initialize the RequestExecutor with the app web URL.
var executor = new SP.RequestExecutor(appweburl);
var metatdata = "{ '__metadata': { 'type': 'SP.Data.TestListListItem' }, 'Title': 'changelistitemtitle'}";
// Issue the call against the app web.
// To get the title using REST we can hit the endpoint:
// appweburl/_api/web/lists/getbytitle('listname')/items
// The response formats the data in the JSON format.
// The functions successHandler and errorHandler attend the
// sucess and error events respectively.
executor.executeAsync({
url:appweburl + "/_api/SP.AppContextSite(@target)/web/GetFileByServerRelativeUrl('/Shared Documents/a.txt')/CheckOut()?@target='" +
hostweburl + "'",
method: "POST",
body: metatdata ,
headers: { "Accept": "application/json; odata=verbose", "content-type": "application/json; odata=verbose", "content-length": metatdata.length, "X-HTTP-Method": "MERGE", "IF-MATCH": "*" },
success: function (data) {
alert("success: " + JSON.stringify(data));
},
error: function (err) {
alert("error: " + JSON.stringify(err));
}
});
}
// This function prepares, loads, and then executes a SharePoint query to get
// the current users information
//Utilities
// Retrieve a query string value.
// For production purposes you may want to use
// a library to handle the query string.
function getQueryStringParameter(paramToRetrieve) {
var params =document.URL.split("?")[1].split("&");
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == paramToRetrieve)
return singleParam[1];
}
}
关于javascript - checkin / checkout Sharepoint REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250476/
我有一个构建后脚本(powershell),正如预期的那样抛出异常。构建后脚本在“构建后脚本路径”部分的构建定义中定义。异常记录在构建的“其他错误和警告”部分。 启用门控 checkin 后,即使构建
我很快将检查一个新 Java 项目的第一次提交。我使用 Eclipse Ganymede 和一堆插件让事情变得更容易一些。 以前我参与过整个Eclipse项目 checkin 的项目。 checkou
我为解决方案设置了 2 个构建定义,1 个是每晚触发的夜间构建,另一个是门控 checkin 构建,当开发人员尝试将新更改 checkin 源代码管理时将触发。每晚构建使用自定义模板,该模板使用从 E
我遇到了一些团队成员不小心跨(通常是不相关的)团队项目 checkin 代码的问题。我可以因为他们不小心而鞭打他们,或者尝试找到一种更简单的方法来引起他们的注意。我们正在运行 TFS 2010 和 V
查看我的 git 日志: Local changes checked in to index but not committed 然后在下一行 Local uncommitted changes, n
使用 Visual Studio 2012 和 tfs 2012。 “构建” checkin 政策和门控 checkin 之间有什么区别?他们似乎都需要成功构建才能 checkin 。 两者各有什么优
我正在使用命令行将一个项目合并到另一个项目中。例如 ss 合并 $/XXXXXXXX -GF -R 我期待得到这样的输出,这些很好: A.cpp has been merged with no con
我们的团队刚刚从 Netbeans 迁移到 IntelliJ 9 Ultimate,需要知道哪些文件/文件夹通常应从源代码管理中排除,因为它们不是“工作站可移植”,即:它们引用仅存在于一个用户计算机上
您是否将重构更改与功能开发/错误修复更改混合在一起,还是将它们分开?可以使用 Resharper 之类的工具执行的大规模代码重构或重新格式化应该与功能工作或错误修复分开,因为很难在修订之间进行差异并在
这可能吗?如果是这样,我该怎么做? 代码在 C# 中,我们使用的是 TortoiseSVN。 我只是想在每次检查时自动格式化代码。 非常感谢 最佳答案 我强烈推荐它。 使用预提交脚本或者更好的是,找到
是否可以向非系统管理员的用户授予撤消 checkout / checkin 功能?我希望将此功能授予选定的 super 用户,以便他们可以删除组件/页面上的旧锁。我不想增加他们对系统管理员的权限,因为
我已经创建了以下链接中给出的自定义入住政策: http://msdn.microsoft.com/en-us/library/bb668980.aspx 我按照文章解释的步骤进行。一切正常。我的疑问是
假设我有一个巨大的 SVN 存储库(不是我们所有人),并且我正在不同的 check out 目录中处理两个库。 有没有办法在一次 checkin 中自动提交它们? 最佳答案 如果它们确实是单独的结帐,
我希望能够在代码应用于分支之前检查每次 checkin ,在 TFS 中是否可行? 我知道我们可以添加 checkin 政策来强制代码审查,但这适用于 checkin 之前而不是之后。我正在寻找一种不
有没有办法只选择文件中的某些更改并将它们添加到 checkin 中?基本上我正在寻找像 git hunk staging 这样的东西。 最佳答案 洛克, 塑料 SCM 支持“存储”/“搁置”更改,它实
我目前使用 Team Foundation Server 和 Visual Studio。两天以来,我不断收到无法写入文件的错误消息(我尝试访问哪个文件似乎并不重要)。我是团队中唯一有这些问题的人。
我的应用程序几乎没有 nuget 包引用。我是否应该将 packages 文件夹也 checkin 到源代码管理中?我的目的是让其他开发人员可以使用源代码,并跟上稳定版本的引用。如果我使用最新的 nu
我们使用带有 15 个 vobs 的 Clearcase UCM。 我们使用 cleartool lshistory -all -since "time"-nco vob1/vob2/src/vob3
我已经使用 perforce 进行了多次 checkin 。我没有意识到所有这些都是不必要的。我想恢复工作目录中最后 x 个修订版的所有更改,更新版本号,然后 checkin 。 我熟悉 Mercur
你正在使用 subversion 并且你不小心在它准备好之前 checkin 了一些代码。例如,我经常:a) checkin 一些代码,然后 b) 稍微编辑一下,然后 c) 按下,输入以重复前面的命令
我是一名优秀的程序员,十分优秀!