restful 認証 - Microsoft Planner タスクを更新するための Microsoft Graph REST API?

okwaves2024-01-25  8

これは単純な引用符エスケープの問題ではないかと思いますが、原因がわかりません。

REST API で CURL を使用して Microsoft Planner タスクを更新しようとしています。タスクを (FileMaker というカスタム アプリケーションから Microsoft Graph API を使用して Microsoft Planner に) 問題なく作成できますが、プランナー タスクを更新しようとすると、「この種類には If-Match ヘッダーを指定する必要があります」というエラーが表示されます。リクエストの。」ただし、If-Match ヘッダーを含めていますが、正しく入力されていない可能性があります。

URL は次のとおりです。 「https://graph.microsoft.com/v1.0/planner/tasks/」 & $microsoftplannerタスクID

FileMaker 内で入力している CURLOPTIONS は ...

「-X パッチ」 & 「 -H "権限: ベアラー" & $$userToken と&quoと;"" & 「 -H "Content-Type: application/json"" & 「 -H "If-Match:" & $microsoftPlannerTasktag & 「」 & 「 -d @$PlannerTaskDetails"

最終的にはこんな感じになります… -X PATCH -H "認可: ベアラー wEXu"k_QQY" -H "コンテンツタイプ: application/json" -H "If-Match: W/"JzEtVGFzayAgQEBAQEBAQBAQEBARCc="" -d @$PlannerTaskDetails

最初にタスクを作成すると、応答は次のように表示されます… "@odata.etag": "W/" JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="" 上記の cURL ヘッダーで使用しています。しかし…W/と引用符を削除しています。 W/ は「弱い」という意味なので、PATCH ヘッダーにはそれを含めないと思いますが、アドインを試してみましたとにかく実行しても成功しません。

Microsoft の UPDATE PLANNERTASK リファレンスは次のとおりです… https://learn.microsoft.com/en-us/graph/api/plannertask-update?view=graph-rest-1.0&tabs=http

POSTMAN を使用してタスクを問題なく更新できますが、リクエスト送信時のヘッダーがどのように見えるかわかりません。

これを Postman で動作させることができ、そこで Plan ETag 変数に次のように入力しました。 「JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=」付き

郵便配達員のヘッダーに etag が示されていることに気付きました。 「JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=」付き

そして、体は次のように戻ります "@odata.etag": "W/" JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="",

これは、curloption 変数の単純な構文の問題に違いありませんが、理解できません。

私もIf-Match ヘッダーの W/ を削除してみたので、次のようになります。 -H "一致の場合: "JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=""

If-Match ヘッダーには追加の引用符が含まれているため、次のようになります。 -H "一致の場合: JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="

これらはすべて同じ「if-match」エラーになります。

興味深いことが 1 つあります。引用符の前にスラッシュを含めるように If-Match を変更すると

-H "一致する場合: "JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=""

Filemaker のスクリプト デバッガでエラー 10「要求されたデータがありません」が発生し、URL からの挿入ステートメントからの応答がありません。ただし、これは「if-match: 」として読み取られるため、意味はあります。

W/ を追加しても同じです -H "If-Match: W/" JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="" エラー 10 も表示されます

何かご意見がございましたら、ご協力をよろしくお願いいたします!!



------------------------

これを試してください:

"-X PATCH " & 
"-H " & quote("Authorization: Bearer " & $$userToken) & 
"-H " & quote("Content-Type: application/json") &
"-H " & quote("If-Match: W/" & quote($microsoftPlannerTasketag)) &
"-d @$PlannerTaskDetails"

2

ダニーロ、ご協力ありがとうございます!あなたの提案を使用すると、curloption は次のようになります... -X PATCH -H "Authorization: Bearer 6sDMsyIDydR9NpZQtkj3o9J0JDG7itu13P44「Iw2gCLLg」 -H "コンテンツタイプ: application/json" -H "If-Match: W/\"JzEtVGFzayAgQEBQEBARCc=\"" -d @$PlannerTaskDetails はエラー 10「リクエスト データが見つかりません」を生成します。

– user14223444

2020 年 9 月 8 日 17:56

if-match の周囲に引用符を追加するだけで、元の etag から W. と引用符を削除しない場合 ... " -H" & Quote ( "If-Match: " & $microsoftPlannerTasketag ) &結果は次のようになります... -H "If-Match: W/\"JzEtVGFzayAgQEBQEBAQEBARCc=\""と別のエラー メッセージが表示されます...要求 URI「tasks.office.com:444/taskapi/v2.0/…」に一致する HTTP リソースが見つかりませんでした。」、「ルーティング規則が見つかりませんでした」テンプレートを使用して OData パスのアクションを選択します。

– user14223444

2020 年 9 月 8 日 18:20

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。