Notiondesk OAuth מאפשר ללקוחות Notiondesk אחרים לחבר את האפליקציה שלך לסביבת העבודה שלהם מבלי לשתף מפתח API. הלקוח נכנס ל-Notiondesk, סוקר את מה שהאפליקציה שלך מבקשת ומאשר זאת. האפליקציה שלך מקבלת אסימון גישה עבור Notiondesk REST API, והלקוח יכול לבטל אותו בכל עת. מאמר זה מסביר כיצד רישום האפליקציה שלך, הרצת זרימת קוד האישור של OAuth 2.0 עם PKCE, רענון אסימונים וטיפול בשגיאות.
מתי להשתמש ב-OAuth במקום מפתח API
| אסימון גישה של OAuth | מפתח API של סביבת עבודה | |
|---|---|---|
| השתמש בו עבור | אפליקציה שאליה לקוחות Notiondesk אחרים מתחברים: מוצר SaaS, שילוב זירת מסחר, כלי דיווח | אוטומציה שאתה מפעיל עבור סביבת העבודה שלך: סקריפט, משימה מתוזמנת, שלב CI |
| מי יוצר את זה | הלקוח, על ידי אישור האפליקציה שלך | אתה, בהגדרות > מפתחים > מפתחות API |
| מֶשֶׁך הָחַיִים | אסימון גישה: שעה אחת. אסימון רענון: 30 יום, מתחדש בכל רענון | עד שפג תוקפו, עד שיעבור סיבוב או עד שיבוטל |
| בוטל מ | הגדרות > מפתחים > אפליקציות מחוברות | הגדרות > מפתחים > מפתחות API |
כל נתיב API Notiondesk מקבל את שני הפרטים ועונה עליהם באותו אופן: אותם היקפים, תגובות ושגיאות.
מה האפליקציה שלך צריכה לדעת
| פָּרִיט | עֵרֶך |
|---|---|
| מטא-נתונים של שרת הרשאות | https://api.notiondesk.so/.well-known/oauth-authorization-server |
| נקודת קצה של הרשאה | https://api.notiondesk.so/oauth/authorize |
| נקודת קצה של אסימון | https://api.notiondesk.so/oauth/token |
| נקודת קצה של רישום לקוח | https://api.notiondesk.so/oauth/register |
| מַשׁאָב | https://api.notiondesk.so |
| טווחים | __נשמר_72__, __נשמר_71__, __נשמר_70__, __נשמר_69__ |
| סוגי מענקים | authorization_code עם PKCE, ו-refresh_token |
| שיטת PKCE | S256 בלבד |
קרא את נקודות הקצה ממסמך המטה-דאטה של שרת ההרשאה במקום לקודד אותן בקידוד קשיח.
שלב 1: רישום האפליקציה שלך
הירשם פעם אחת עם רישום לקוחות דינמי :
התגובה 201 Created מכילה את ה-client_id שלך, ומכיוון שביקשת client_secret_post, גם client_secret. הסוד מוצג פעם אחת: אחסן אותו עם סודות השרת האחרים שלך.
עם "token_endpoint_auth_method": "none", האפליקציה שלך היא לקוח ציבורי ללא סוד, ו-PKCE מגן על חילופי הקוד שלה.
במקום להירשם, ניתן להשתמש בכתובת ה-HTTPS של מסמך מטא-נתונים של לקוח בתור client_id שלך. Notiondesk מאחזר את המסמך כאשר לקוח מאשר את האפליקציה שלך ומאחסן אותו במטמון למשך עד חמש דקות.
כללי URI להפניה מחדש
curl -X POST "https://api.notiondesk.so/oauth/register" \
-H "Content-Type: application/json" \
-d '{"client_name": "Acme Reports", "redirect_uris": ["https://acme.example/oauth/callback"], "token_endpoint_auth_method": "client_secret_post"}'- השתמש ב-
https, אוhttpעל מארח לולאה חוזרת:127.0.0.1,localhostאו[::1].
- הפניה חוזרת (loopback redirect) תואמת בכל פורט. כל הפניה אחרת חייבת להתאים במדויק.
- תווים כלליים, מקטעים, אישורים לפני המארח (
user@), קו נטוי הפוך, תווים שאינם ASCII ומארחים מקודדים באחוזים נדחים.
- המארח שהלקוח רואה במסך ההסכמה מגיע מכתובות ה-URI להפניה שלך או מכתובת ה-URL
client_idשלך. רשום רק מארחים שבבעלותך.
שלב 2: שלח את הלקוח אל Notiondesk
צור code_verifier אקראי, לאחר מכן גזור את code_challenge כ-hash SHA-256 של המאמת, מקודד ב-base64url ( PKCE ). הפנה את דפדפן הלקוח אל:
https://api.notiondesk.so/oauth/authorize
?response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https%3A%2F%2Facme.example%2Foauth%2Fcallback
&scope=read%20write
&state=RANDOM_STATE
&code_challenge=YOUR_CODE_CHALLENGE
&code_challenge_method=S256
&resource=https%3A%2F%2Fapi.notiondesk.soresourceנדרש וחייב להיות בדיוקhttps://api.notiondesk.so: אותיות קטנות, ללא נטוי, ללא נתיב. ערך חסר או שונה עונה עלinvalid_request.
scopeהיא רשימה מופרדת ברווחים. בקש רק את ההיקפים שבהם האפליקציה שלך משתמשת.
stateמגן מפני זיוף בקשות בין אתרים. בדוק זאת כאשר הלקוח חוזר.
אסימון שהונפק עבור Notiondesk REST API פועל רק עם REST API. אסימון שהונפק עבור Workspace MCP נדחה על ידי REST API, ולהיפך.
שלב 3: הלקוח מאשר את האפליקציה שלך
Notiondesk מציג את מסך ההסכמה שלו. הלקוח נכנס ורואה את שם האפליקציה שלך ואת המארח שלה, את סביבת העבודה שלו ואת ההיקפים מהבקשה שלך שהתפקיד שלו מאפשר. הוא מאשר או דוחה את הבקשה כולה.
ההיקפים שהאפליקציה שלך יכולה לקבל תלויים בתפקיד סביבת העבודה של הלקוח:
| תפקיד הלקוח | היקפים שהאפליקציה שלך יכולה לקבל |
|---|---|
| צופה או מנהל חיוב | read |
| עוֹרֵך | __נשמר_44__, __נשמר_43__, __נשמר_42__ |
| מנהל או בעל סביבת עבודה | __נשמר_41__, __נשמר_40__, __נשמר_39__, __נשמר_38__ |
admin מאפשר לאפליקציה שלך לשנות את המיתוג של מרכז העזרה, להגדיר אינטגרציות שהסקריפטים שלהן נטענים במרכז העזרה הציבורי ולמחוק הפניות. בקש זאת רק אם האפליקציה שלך משתמשת בנתיבים אלה.
הלקוח אינו יכול לאשר את הבקשה כאשר:
- התפקיד שלהם לא מאפשר אף אחד מההיקפים שביקשת;
- לסביבת העבודה שלהם אין גישת API. מסך ההסכמה מראה לאחר מכן "תוכנית סביבת העבודה אינה כוללת גישת API". גישת API דורשת תוכנית Enterprise.
לאחר האישור, הדפדפן חוזר ל-redirect_uri שלך עם code, state שלך, ו-iss, המזהה של שרת ההרשאה Notiondesk. אם הלקוח מסרב, ההפניה תישא את error=access_denied במקום זאת.
שלב 4: החלפת הקוד בטוקנים
הקוד תקף למשך 60 שניות ופועל פעם אחת:
השמט את client_secret עבור לקוח ציבורי. התגובה:
scope מפרט את הטוקים שהלקוח העניק, שיכולים להיות פחות ממה שביקשת. אחסן את שני האסימונים בשרת שלך.
שלב 5: קריאה ל-Notiondesk API
שלח את אסימון הגישה כאסימון נושא, בדיוק כמו מפתח API:
היקפי האסימון מוגבלים לתפקיד הנוכחי של הלקוח המאשר: לקוח שהשתנה לצופה עוזב את האפליקציה שלך עם read בלבד, ונתיב שזקוק להיקף חסר עונה על 403 insufficient_scope.
תקציבי מגבלת שיעור וערכי Idempotency-Key שייכים למענק. כל אישור הוא מענק חדש עם תקציבים ומפתחות משלו, ורענון אסימון שומר על שניהם.
שלב 6: רענון אסימון הגישה
אסימון גישה תקף לשעה אחת. לפני שפג תוקפו, יש להחליף את אסימון הרענון בזוג חדש:
כל רענון מחזיר אסימון רענון חדש התקף ל-30 יום ומבטל את זה ששלחת. אחסן את אסימון הרענון החדש לפני השימוש באסימון הגישה החדש.
curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=authorization_code \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=THE_CODE \
-d code_verifier=YOUR_CODE_VERIFIER \
-d redirect_uri=https://acme.example/oauth/callback{
"access_token": "eyJ...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "8f3c...",
"scope": "read write"
}curl "https://api.notiondesk.so/sites" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "nd-version: 2026-10-16"curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=refresh_token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d refresh_token=THE_REFRESH_TOKENכיצד לקוחות מבטלים את האפליקציה שלך
בעלי סביבות עבודה ומנהלים רואים כל אפליקציה עם גישה לסביבת העבודה שלהם תחת הגדרות > מפתחים > אפליקציות מחוברות . אפליקציות המשתמשות ב-REST API מציגות את REST API בעמודה Access , יחד עם האפליקציה, האדם שאישר אותה, היקפיה והפעילות האחרונה שלה. ביטול מסיים את ההענקה באופן מיידי: אסימון הגישה ואסימון הרענון שלה מפסיקים לפעול בבקשה הבאה.
מענק מסתיים גם מעצמו:
- לאחר 30 יום ללא רענון;
- כאשר אסימון הרענון שלו נעשה בו שימוש חוזר.
כאשר הלקוח המאשר חסר את התפקיד הדרוש למסלול, או שתוכנית סביבת העבודה חסרה גישת API, הבקשות נדחות. הן פועלות שוב אם התפקיד או התוכנית חוזרים לפני סיום ההענקה.
פתרון בעיות Notiondesk OAuth
נקודות הקצה של ההרשאה והטוקן עונות על שגיאות OAuth סטנדרטיות, ולא על מעטפת השגיאה של ה-API Notiondesk:
{"error": "invalid_grant", "error_description": "Invalid authorization code."}error | סטָטוּס | כַּאֲשֵׁר |
|---|---|---|
invalid_request | 400 | פרמטר חסר או לא חוקי: resource לא ידוע, אתגר PKCE חסר, redirect_uri לא רשום, לקוח לא ידוע בנקודת הקצה של ההרשאה, או grant_type לא נתמך. |
invalid_client | 401 | סוד הלקוח חסר או שגוי |
invalid_grant | 400 | הקוד או אסימון הרענון אינם ידועים, פג תוקפם, כבר בשימוש או מבוטלים, code_verifier או redirect_uri אינם תואמים, או שנקודת הקצה של האסימון אינה מכירה את הלקוח. |
server_error | 500 | Notiondesk נכשל; נסה שוב מאוחר יותר |
נקודת הקצה של ההרשאה מציגה את השגיאות הללו בעצמה ולעולם לא מפנה בקשה לא חוקית אל redirect_uri שלך. הסכמה שנדחתה מגיעה לאפליקציה שלך רק כהפניה error=access_denied.
קריאות ל-API עצמו עונות על מעטפת השגיאה Notiondesk של ה-API . אסימון גישה שפג תוקפו או בוטל עונה על 401 authentication_error עם ההודעה "מפתח API לא חוקי או חסר.", אותה הודעה שמקבל מפתח API שאינו שמיש.
שאלות נפוצות
האם ניתן לקרוא ל-Notiondesk API מאפליקציה בעלת עמוד יחיד באמצעות OAuth?
לא. לקוחות מבוססי דפדפן אינם נתמכים. הפעל את זרימת OAuth וכל קריאה ל-API בשרת שלך, ושמור על אסימונים מחוץ לדפדפן.
כמה זמן מחזיק אסימון גישה Notiondesk?
שעה אחת. רענן אותו באמצעות אסימון הרענון, אשר תקף ל-30 יום ומוחלף בכל רענון. מענק שלא מתרענן במשך 30 יום מסתיים.
האם אפליקציית OAuth שלי יכולה להשתמש ב-Workspace MCP?
לא. טוקן שהונפק עבור ממשק ה-API של REST, עם resource=https://api.notiondesk.so, נדחה על ידי Workspace MCP. Workspace MCP מנפיק טוקים משלו ללקוחות בינה מלאכותית.
מדוע האפליקציה שלי קיבלה פחות היקפים ממה שביקשה?
תפקיד סביבת העבודה של הלקוח מגביל את הטווחים. עורך יכול להעניק read, write ו-sync, אך לא admin. השדה scope של תגובת האסימון מפרט מה הוענק.