defineConnectionProvider({ type: 'oauth', ... }) لن تحتاج إلى الترحيل.
defineConnectionProvider
عرّف كيفية الحصول على اتصالات تطبيقك
defineConnectionProvider
عرّف كيفية الحصول على اتصالات تطبيقك
يصف موفّر الاتصال عملية المصافحة الخاصة بـ OAuth التي يحتاجها تطبيقك. ينقر المستخدم على “إضافة اتصال” في إعدادات تطبيقك، ويُكمل شاشة موافقة المزوّد، ثم يتم إنشاء صف النقاط الرئيسية:
ConnectedAccount في مساحة عمله.يتطلّب الإعداد العملي ملفّين — موفّر الاتصال، وتصريح serverVariables مطابق في defineApplication يحتفظ ببيانات اعتماد عميل OAuth.src/connection-providers/linear-connection.ts
src/application.config.ts
nameهي سلسلة المعرّف الفريدة المستخدمة فيlistConnections({ providerName })(بصيغة kebab-case، ويجب أن تطابق^[a-z][a-z0-9-]*$).displayNameيظهر في علامة تبويب إعدادات كل تطبيق وفي قائمة أدوات الذكاء الاصطناعي.clientIdVariable/clientSecretVariableهي أسماء، وليست قيماً — ويجب أن تطابق المفاتيح المصرَّح بها فيdefineApplication.serverVariables. يُدخِل مسؤول الخادم القيم الفعليةclient_idوclient_secretعبر واجهة تسجيل التطبيق، ولا تُضمَّن أبدًا في مستودعك.- استخدم
serverVariables(وليسapplicationVariables) — بيانات اعتماد OAuth على مستوى الخادم، ويوجد تطبيق OAuth واحد لكل خادم Twenty. - إلى أن يتم ملء كلا
serverVariables، تعرض علامة تبويب إعدادات كل تطبيق تلميح “بحاجة إلى مسؤول الخادم” ويكون زر “إضافة اتصال” معطّلًا. type: 'oauth'هي القيمة الوحيدة المدعومة حاليًا. المميِّز متوافق مع الإصدارات المستقبلية: الأنواع المستقبلية ('pat'،'api-key'، …) ستضيف كُتل تهيئة فرعية جديدة إلى جانبoauth.
listConnections / getConnection
استخدم الاتصالات من دالة منطقية
listConnections / getConnection
استخدم الاتصالات من دالة منطقية
داخل معالج دالة منطقية، تُرجِع يحتوي كل اتصال على:
النقاط الرئيسية:
listConnections({ providerName }) صفوف ConnectedAccount الخاصة بهذا التطبيق للمزوّد المحدَّد، مع رموز وصول محدَّثة.src/logic-functions/handlers/create-linear-issue-handler.ts
| الحقل | الوصف |
|---|---|
id | معرّف صف فريد؛ مرّره إلى getConnection(id) لإعادة جلب واحد فقط |
visibility | 'user' (خاص بعضو واحد في مساحة العمل) أو 'workspace' (مشترك مع جميع الأعضاء) |
scopes | أذونات OAuth الممنوحة من قِبل المزوّد الأصلي (مختلفة عن visibility — ولا علاقة لها به) |
userWorkspaceId | معرّف userWorkspace للمالك — مفيد لاختيار “اتصال مستخدم الطلب” في مشغّلات مسارات HTTP |
accessToken | رمز وصول OAuth حديث (يُحدَّث تلقائيًا إذا انتهت صلاحيته) |
name / handle | الاسم المعروض للاتصال (يُستمد تلقائيًا عند ردّ نداء OAuth، وقابل لإعادة التسمية من قِبل المستخدم) |
authFailedAt | يُضبط عند فشل أحدث عملية تحديث؛ يجب على المستخدم إعادة الاتصال |
- مرّر
{ providerName }للتصفية حسب المزوّد؛ واحذفه للحصول على كل الاتصالات التي يملكها هذا التطبيق عبر جميع المزوّدين. - يقوم الخادم بتحديث رمز الوصول بشفافية قبل الإرجاع. يرى معالجك دائمًا رمزًا صالحًا للاستخدام (أو سيكون
authFailedAtمُعيّنًا). getConnection(id)هي المعادِل لصف واحد.
رؤية خاصة بالمستخدم مقابل المشاركة على مستوى مساحة العمل
كيف يختار المستخدمون بين بيانات اعتماد خاصة ومشتركة
رؤية خاصة بالمستخدم مقابل المشاركة على مستوى مساحة العمل
كيف يختار المستخدمون بين بيانات اعتماد خاصة ومشتركة
عند نقر المستخدم “إضافة اتصال”، سيُطلب منه اختيار مستوى الرؤية:يُسمح بوجود اتصالات متعددة لكل (مستخدم، مزوّد)، لذا يمكن للمستخدم نفسه امتلاك “Linear شخصي” و”Linear للعمل” جنبًا إلى جنب.
- لي فقط — بيانات الاعتماد خاصة بالمستخدم الذي قام بالاتصال. ستتمكّن أي دالة منطقية تُستدعى بالنيابة عنه (مشغّل مسار HTTP مع
isAuthRequired: true) من رؤيتها؛ أمّا مشغّلات cron وأحداث قاعدة البيانات فلا. - مشتركة على مستوى مساحة العمل — يمكن لأي عضو في مساحة العمل استخدام بيانات الاعتماد. يمكن لمشغّلات cron/قاعدة البيانات رؤيتها أيضًا، لأنها لا تملك مستخدم طلب.
إعداد المزوّد لمرة واحدة
سجّل تطبيق OAuth الخاص بك لدى خدمة الطرف الثالث
إعداد المزوّد لمرة واحدة
سجّل تطبيق OAuth الخاص بك لدى خدمة الطرف الثالث
بالنسبة لكل موفّر اتصال، يحتاج مسؤول الخادم أولًا إلى تسجيل تطبيق OAuth لدى الطرف الثالث.
- انتقل إلى إعدادات المطوّر لدى المزوّد (مثل https://linear.app/settings/api/applications/new).
- عيّن Redirect URI إلى
\<SERVER_URL>/auth/apps/callback. - انسخ Client ID وClient Secret المُنشأين.
- افتح التطبيق المُثبَّت في Twenty كمسؤول خادم → عيّن القيم على
serverVariablesالمقابلة. - بعد ذلك، يمكن لأعضاء مساحة العمل إضافة الاتصالات من قسم الاتصالات الخاص بكل تطبيق.