تقدم Roblox مخزن أسرار لكل لعبة. الأسرار هي معلومات حساسة مثل مفاتيح API وكلمات المرور ورموز الوصول التي تستخدمها للمصادقة مع الخدمات الخارجية. على سبيل المثال، إذا كنت ترغب في الاتصال بخدمة تحليلات أو موسيقى من طرف ثالث، فمن المحتمل أنك بحاجة إلى استخدام مفتاح API للمصادقة معها.
يمكنك نسخ ولصق مفتاح API في نص برمجي أو إضافته إلى مخزن بيانات، لكن هذه الطرق تحمل مخاطر أمان غير ضرورية. الحل الأفضل هو استخدام مخزن الأسرار والوصول إلى المفتاح باستخدام مجموعة صغيرة من الطرق الآمنة.
إضافة أسرار
لعرض أو إنشاء أو تعديل الأسرار، يجب أن تكون مالك اللعبة أو مالك المجموعة. يمكنك أن تمتلك ما يصل إلى 500 سر لكل لعبة.
انتقل إلى لوحة التحكم للمبدعين.
اختر لعبتك، ثم اختر الأسرار ⟩ إنشاء سر.
أدخل اسمًا، والسر، والنطاق المعني.
- يعمل الاسم كمعرف فريد للسر، لذا نوصي بشيء وصفي.
- يمكن أن تكون الأسرار بطول يصل إلى 1,024 حرفًا. يجب أن تأتي مفاتيح API ورموز الوصول من مزود الخدمة، ولكن إذا كان السر هو كلمة مرور، فمن المحتمل أنك أنشأتها بنفسك.
- يمكنك استخدام بناء جملة محدود للرموز النائبة للنطاق، مثل * لأي نطاق (غير موصى به) أو *.example.com لأي نطاق فرعي في example.com. النطاقات المحددة أفضل بكثير، مثل my.example.com.
الأسرار المحلية
لأسباب أمنية، فإن مخزن الأسرار لكل لعبة متاح فقط للخوادم الحية أو بيئات الاختبار التعاونية. إذا حاولت الوصول إلى سر أثناء الاختبار المحلي، ستحصل على خطأ لا يمكن العثور على السر بالمفتاح المعطى. ستحصل على نفس الخطأ إذا حاولت الوصول إلى الأسرار من نص برمجي عميل.
لتحديد الأسرار للاختبار المحلي، انتقل إلى Studio ثم انتقل إلى ملف ⟩ إعدادات التجربة ⟩ الأمان. يمكنك إنشاء أسرار جديدة وتعديل أو حذف الأسرار الموجودة في قسم الأسرار المحلية.
استخدام الأسرار
قبل استخدام الأسرار داخل لعبتك، يجب عليك تمكين السماح بطلبات HTTP في قسم الأمان من نافذة ملف ⟩ إعدادات التجربة في Studio. ثم استدعِ HttpService:GetSecret() داخل نص برمجي للخادم:
local HttpService = game:GetService("HttpService")
local testSecret = HttpService:GetSecret("test_secret")جزء من جاذبية استخدام مخازن الأسرار هو أنك لا تستطيع طباعة سر عن طريق الخطأ. بدلاً من السر نفسه، يقوم الكود التالي بإخراج الاسم الذي قدمته عند إنشاء السر:
print(testSecret) --> Secret(test_secret)لا يمكنك التلاعب بالسلسلة مباشرة. بدلاً من ذلك، يتيح لك نوع البيانات Secret إضافة بادئة ولاحقة إلى السر للمساعدة في تشكيل عنوان URL أو إدراج محتوى مثل Bearer:
local HttpService = game:GetService("HttpService")
local testSecret = HttpService:GetSecret("test_secret")
local prefix = "https://my.example.com/endpoint?apiKey="
local suffix = "&user=username"
local url = testSecret:AddPrefix(prefix)
url = url:AddSuffix(suffix)
print(url) --> https://my.example.com/endpoint?apiKey=Secret(test_secret)&user=usernameبعد أن يكون لديك عنوان URL مع السر المدخل، يمكنك إجراء طلبات HTTP القياسية باستخدام طرق مثل HttpService:RequestAsync(). بالطبع، يمكنك تجاهل هذه الطرق وإدراج السر مباشرة في رأس الطلب أيضًا.