2017-04-06 5 views
1

私は、Sharepoint REST APIを通じてSharepoint Onlineライブラリに文書をアップロードしようとしているNodeJSとExpressJs上にWebアプリケーションを構築しています。Sharepoint要求ダイジェスト値クロスドメイン

私はリストアイテムを認証し、作成して更新することができます。私はnode-sp-authを認証に使用しており、express-requestはHTTP要求をしています。

Sharepoint REST APIにアクセスするには、私のヘッダにFormDigestValueを使用しています。

ヘッダー:

Headers['Content-Type'] = 'application/json;odata=verbose'; 
Headers['X-RequestDigest'] = FormDigestValue; 
Headers['Accept'] = "application/json;odata=verbose"; 
Headers['X-HTTP-Method'] = "POST"; 

これは私がカスタムリストに/更新リスト項目を作成しようとすると、細かい作業です。しかし、私は次のエラー受信文書をアップロードしようとすると:

body: '{"error":{"code":"-1, Microsoft.SharePoint.SPException","message": 
{"lang":"en-US","value":"There is no app context to execute this request."}}}' } } 

私は、アップロードのために使用していますURL:

siteurl + "/_api/SP.AppContextSite(@TargetSite)/web/lists/getByTitle(@TargetLibrary)/RootFolder/Files/add([email protected],overwrite='true')?" + 
     "@TargetSite='" + siteurl + "'" + 
     "&@TargetLibrary='" + libraryName + "'" + 
     "&@TargetFileName='" + fileName + "'"; 

ポスト要求:

request.post({ 
    url: url, 
    type: "POST", 
    headers: uploadHeaders, 
    binaryStringRequestBody: true, 
    body: fileData, 
}) 

任意のアイデアをどのような私は間違っている?

答えて

2

使用の代わりにポストのために、このフォーマット:あなたはRequestDigestを持っていない場合

url: url, 
type: 'POST', 
data: fileData, 
processData: false, 
headers: { 
    'Accept':'application/json;odata=verbose', 
    'X-RequestDigest': digest, 
    'Content-Length': fileData.byteLength 
} 

すでに/ SP.AppContextSite(@TargetSite)_API呼び出す/

+0

contextinfoは私が助けたと思います。 ''アクセスが拒否されました。あなたはこのアクションを実行したり、このリソースにアクセスする権限を持っていません。 ""私は正しい権限を持っていると確信しています。 – TietjeDK

関連する問題