Here you have the script in case you want to test it from chrome: var reqUrl= "https://XXXX.sharepoint.com/_api/web/siteusers/getbyid(170)";
var body={ '__metadata':{ 'type': 'SP.Data.UserInfoItem' }, 'Title':'Active3','EMail': 'xxxx@xxx.es' }
var _payloadOptions = {
method: "POST",
body: undefined,
headers: {
credentials: "include",
Accept: "application/json; odata=verbose",
"Content-Type": "application/json; odata=verbose"
}
};
//Get RequestDigest First
fetch("https://XXXX.sharepoint.com/_api/contextinfo",_payloadOptions).then(r=>r.json())
.then(r=>
{
_payloadOptions.headers["X-RequestDigest"]=r.d.GetContextWebInformation.FormDigestValue
_payloadOptions.headers["IF-MATCH"]="*"
_payloadOptions.body=JSON.stringify(body);
_payloadOptions.method="MERGE";
// Make REST API Call to update list item without increamenting version.
fetch(reqUrl
,_payloadOptions).then(function(r){
console.log(r)
}
).then(r=>console.log(r))
})
Hey @DardoJav,
Please try with auth configurator to avoid incorrect creds payload:
import { AuthConfig as SPAuthConfigurator } from 'node-sp-auth-config';
import { ISPPullOptions, ISPPullContext, Download as IDownload } from 'sppull';
new SPAuthConfigurator().getContext().then((context) => {
const Download: IDownload = require('sppull');
const sppull = Download.sppull;
const context: ISPPullContext = {
siteUrl: context.siteUrl,
...context.authOptions
} as any;
const options: ISPPullOptions = {
spRootFolder: 'Shared%20Documents',
dlRootFolder: './Downloads/Documents'
};
sppull(context, options);
}).catch(console.log);
This works for me:
const { AuthConfig } = require('node-sp-auth-config'); const { create } = require('sp-request'); (async () => { const { siteUrl, authOptions } = await new AuthConfig().getContext(); const spr = create(authOptions); const digest = await spr.requestDigest(`${siteUrl}`); const res = await spr.post(`${siteUrl}/_api/web/lists/getByTitle('MyList')/items(1)`, { headers: { 'X-RequestDigest': digest, 'X-HTTP-Method': 'DELETE', 'IF-MATCH': '*' } }); console.log(res.statusCode, res.statusMessage); })().catch(console.warn);
ok, so I have an issue with this code - and it must be a config setting. If I run this, I get prompted for all my dettails (url, type, username etc)
however, I get a 401
if I browse to the site in chrome, and enter the same username, password I get logged on
what am I missing ? I really would appreciate some help here, my eyes are bleeding from all the googling ;)
User credentials (NTLM)
btw
@koltyakov I got this error. My project wants to download the excel file and read it, but at some point it does not work and the account is error , This excel file I was shared by a member of the company, please help me :
(node:20972) UnhandledPromiseRejectionWarning: Error: <S:Fault>
<S:Code>
<S:Value>S:Sender</S:Value>
<S:Subcode>
<S:Value>wst:FailedAuthentication</S:Value>
</S:Subcode>
</S:Code>
<S:Reason>
<S:Text xml:lang="en-US">Authentication Failure</S:Text>
</S:Reason>
<S:Detail>
<psf:error xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
<psf:value>0x800434D4</psf:value>
<psf:internalerror>
<psf:code>0x800434D4</psf:code>
<psf:text>AADSTS50076: Due to a configuration change made by your administrator, or because you moved t
o a new location, you must use multi-factor authentication to access ''.</psf:text>
</psf:internalerror>
</psf:error>
</S:Detail>
</S:Fault>
at OnlineUserCredentials.postToken (C:\Users\MEDCPham\Documents\CloneServer\node_modules\node-sp-auth\lib\s
rc\auth\resolvers\OnlineUserCredentials.js:148:19)
at C:\Users\MEDCPham\Documents\CloneServer\node_modules\node-sp-auth\lib\src\auth\resolvers\OnlineUserCrede
ntials.js:48:25
at processTicksAndRejections (internal/process/task_queues.js:93:5)
(Use node --trace-warnings ...
to show where the warning was created)
(node:20972) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by thr
owing inside of an async function without a catch block, or by rejecting a promise which was not handled with .
catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections
=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:20972) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise
rejections that are not handled will terminate the Node.js process with a non-zero exit code.
My Code :
function getExcelData() {
spauth.getAuth(url, {
username:username,
password:password
})
.then(function(options){
var headers = options.headers;
headers['Accept'] = "application/json;odata=verbose";
requestprom.get({
url: url,
headers: headers,
encoding: null
}).then(function(listresponse){
fs.writeFile('./public/excel.xlsx', listresponse , 'binary', function(err){
if (err) console.log(err)
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
console.log('File saved.')
// function logic