لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 08/14/21 في كل الموقع
-
أعتقد أنه بإمكانك عمل التالي: if(option){ window.open("accessories/tatreez/tatreez-view.php?id="+option); } else { alert("Please select an option"); } كما يُمكنك إعتماد طريقة أخرى حيث تجعل الزر غير مفعل مبدئياً اي لا يُمكن الضغط عليه و تتسمع على حدث change على select ثم تضع شرط بداخله لتفحص الoption: $("#embroiderys-value").on('change', function(){ if($(this).val()){ // enable the button } else { // disable the button } });3 نقاط
-
أعتقد أنه يُمكن لأي شخص الإشتراك بالنشرة البريدية بغض النظر عن ما إذا كان مشترك في الموقع او لا فيُمكن للزوار أيضاً الإشتراك في النشرة البريدية لذلك من الأفضل إنشاء جدول جديد تضع به الأشخاص الذين إشتركو في النشرة البريدية يحتوي الجدول على حقل email كحقل مبدئي. في إستمارة تسجيل عضوية جديدة تضيف حقل checkbox يكون إختياري إذا أراد المستخدم الإشتراك بالنشرة البريدية يُحدد ذلك الحقل و على أساسه تُسجل إيميل ذلك الشخص في جدول newsletters. أما في إستمارة الإشتراك بالنشرة تضع حقل الإيميل و في المتحكم الخاص بالعملية تبحث عن الإيميل الذي أدخله الشخص في جدول newsletters إن لم يكن موجود تقوم بإضافته.3 نقاط
-
يمكن التأكد أن الدليل المطلوب يتبع للخيارات المطلوبة: function showDetails() { var sel = document.getElementById('embroiderys-value'); var selIndex = sel.selectedIndex; if (selIndex == 0) { alert("أرجو تحديد خيار مناسب"); return; } var option = sel.options[selIndex].value; window.open("accessories/tatreez/tatreez-view.php?id="+option); } حيث قمنا بعمل شرط، إن كان العنصر المحدد هو 0 (تأكد من حمل المتغصير للقيمة null مثلا أو قيمة أخرى) نقوم بعمل alert ثم نضع عبارة retun لكي لا يتم استكمال الشيفرة في الدالة2 نقاط
-
لماذا عليك تنفيذ هذه التعليمة؟ عملية التهجير قائمة على عدم العبث بالبيانات أثناء تغيير هيكلية الجداول، قم بإنشاء ملف تهجير جديد وأضف له الشيفرة المسؤولة عن إضافة الحقل الجديد ثم نفذ الأمر php artisan migrate فقط حيث أنه يقوم بتهجير الملفات التي لم تهجر.. أما الفكرة الأولى صحيحة، وهذا هو المطلوب، قم بتنفيذها. حاول تنفيذ أفكارك، والخطأ هو الجزء المفيد بعملية التعلم، اخسر البيانات اليوم أثناء التجريب وتعرف على سبب المشكلة لكي تتفاداها في المستقبل دوماً، افتح التوثيق واقرأ التعليمات: Laravel migration updating tables2 نقاط
-
الإصدار 1.0.0
49373 تنزيل
هل لديك وظيفة ولكن طموحك يمنعك من الاعتماد على الوظيفة فقط وأردت أن تبدأ عملك الحر لتحقق المزيد من الدخل والاستقلالية، فأنا ادعوك لقراءة هذا الدليل المختصر بتمعن لتتعرف على المنتجات الرقمية وكيف يمكنك البدء ببيعها، والمفاجأة السارة أنه يمكنك أن تبدأ بالعمل من دون رأس مال في كثير من الأحيان، فكل ما تحتاج إليه لتتمكن من البدء جهاز كمبيوتر وخط اتصال بالإنترنت بالإضافة إلى العمل الجاد والرغبة بالنجاح. إذا كنت لا تؤمن بهذا النوع من الأعمال وتعتقد أنها غير مجدية، فأنا أدعوك لأن لا تتعجل، فسأطلعك على قصص نجاح ستغير دون شك من هذا الاعتقاد ولكن بعد أن نستعرض بشكل مختصر بعد المحطات الرئيسية لتطور العملية التجارية في شبكة الإنترنت، بالإضافة إلى لمحة عن وضع الشراء الإلكتروني في العالم العربي. أنصحك بالابتعاد عن مصادر الإزعاج وإعداد كوب من القهوة لتبدأ عملك بكل نشاط وتركيز وتكون قادرا على البدء في بناء مستقبلك.1 نقطة -
كيف اقوم بعمل timer للانتقال بين 3 خلفيات للشاشه كل 10ثواني ب jquery، وكيف اتحكم بوقت الانتقال و نوعية الحركة1 نقطة
-
في المشروع الذي اعمل به اريد ان اعرض المستخدمين الذين اشتركوا في النشرة البريدية في صفحة خاصة للمدير فخطر ببالي فكرتين ولكن لا اعرف تنفيذهم 100% فهي مجرد pseudo code الاولى عبر ادخال حقل جديد في قاعدة البيانات ('confirm') من النوع Boolean و اعطائه قيمة افتراضية و هي 0 (اي لم يشترك) و من ثم عند الاشتراك نقوم بعمل update في قاعدة البيانات للتحول القيمة من 0 الى 1 عبر الدالة update في ال UserConroller ثم نقوم بجلب بيانات المستخدم الذي اشترك عبر الدالة index() في ال UserController مع الشرط ان ال confirm =1 $user=User::all() where confirm=1 ولكنني لا اريد ان اخسر البيانات التي ادخلتها لانه يتوجب علي ان انفذ الامر php artisan migrate:fresh الثانية عبر ال request public function postUsers(Request $request){ return 'users' . $request->input('email'); } ولكنني فقط بحاجة الى ثلاث معلومات من المستخدم و هي ال id , name ,email فقط هل هنالك طرق اخرى؟ هذا حقل الادخال <form method="POST" action=""> @csrf <input type="hidden" name="user_id" value="{{ Auth()->user()->id }}"> <h1 class=" text-center text-4xl font-bold p-4 text-gray-400">{{('Subscribe for latest news')}} </h1> <div class=" flex flex-wrap -mx-3 mb-6 justify-center"> <div class="w-3/4 px-3 mt-10"> <label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2" for="grid-password"> {{__(' E-mail')}} </label> <input name="email" class=" appearance-none block w-full bg-gray-200 text-gray-700 border border-gray-200 rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" id="email" type="email"> </div> </div> <div class="md:flex md:items-center "> <div class="md:w-1/3 text-center "> <button class=" shadow bg-blue-400 hover:bg-blue-200 focus:shadow-outline focus:outline-none text-white font-bold py-2 px-4 rounded" type="submit"> {{__('Subscribe')}} </button> </div> </form> وهذا الصفحة التي اريد ان اعرض بها البيانات @extends('layouts.app') @section('content') <div class="container text-center flex justify-center "> <table class="table-fixed border-separate border-4 p-5 m-10 w-full "> <thead> <tr> <th class=" ">Id</th> <th class="">Name</th> <th class=" ">Email</th> </tr> </thead> <tbody> @foreach($users as $user) <tr> <td class="p-10">{{$user->id}}</td> <td class="p-10">{{$user->name}}</td> <td class="p-10">{{$user->email}}</td> </tr> @endforeach </tbody> </table> </div> @endsection1 نقطة
-
1 نقطة
-
السلام عليكم هذا البرنامج يقوم برفع ملف وارساله للقاعدة كيف يمكن تغيير اسم الملف ( اسم فريد ) ليتم تخزينه بهذا الاسم مثلا $fileName = substr(md5(uniqid(rand(), true)),3,10); كيف يمكن تعديل الكود <?php $uploadDir = 'uploads/'; $response = array( 'status' => 0, 'message' => 'Form submission failed, please try again.' ); // If form is submitted if(isset($_POST['name']) || isset($_POST['email']) || isset($_POST['file'])){ // Get the submitted form data $name = $_POST['name']; $email = $_POST['email']; // Check whether submitted data is not empty if(!empty($name) && !empty($email)){ // Validate email if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){ $response['message'] = 'Please enter a valid email.'; }else{ $uploadStatus = 1; // Upload file $uploadedFile = ''; if(!empty($_FILES["file"]["name"])){ // File path config $fileName = basename($_FILES["file"]["name"]); $targetFilePath = $uploadDir . $fileName; $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); // Allow certain file formats $allowTypes = array('pdf', 'doc', 'docx', 'jpg', 'png', 'jpeg'); if(in_array($fileType, $allowTypes)){ // Upload file to the server if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){ $uploadedFile = $fileName; }else{ $uploadStatus = 0; $response['message'] = 'Sorry, there was an error uploading your file.'; } }else{ $uploadStatus = 0; $response['message'] = 'Sorry, only PDF, DOC, JPG, JPEG, & PNG files are allowed to upload.'; } } if($uploadStatus == 1){ // Include the database config file include_once 'dbConfig.php'; // Insert form data in the database $insert = $db->query("INSERT INTO form_data (name,email,file_name) VALUES ('".$name."','".$email."','".$uploadedFile."')"); if($insert){ $response['status'] = 1; $response['message'] = 'Form data submitted successfully!'; } } } }else{ $response['message'] = 'Please fill all the mandatory fields (name and email).'; } } // Return response echo json_encode($response); ?>1 نقطة
-
أنا أبحث عن نصيحة حول كيفية بدء fastify-cli مع fastify-nextjs لقد حاولت إضافة رمز بسيط إلى المكان المقترح ، لكنه لا يعمل. const path = require('path'); const AutoLoad = require('fastify-autoload'); module.exports = function (fastify, opts, next) { fastify.register(require('fastify-nextjs')).after(() => { fastify.next('/hello'); }); fastify.register(AutoLoad, { dir: path.join(__dirname, 'plugins'), options: Object.assign({}, opts), }); fastify.register(AutoLoad, { dir: path.join(__dirname, 'services'), options: Object.assign({}, opts), }); next(); };1 نقطة
-
ليس بالضرورة ربط الجدولين بعلاقة فكل ما يهم هي عناوين البريد الإلكتروني و من صالح الموقع أن يجمع أكبر قدر ممكن من العناوين حتى يُرسل لهم نشرات بريدية من أجل أغراض تسويقية. أنت تٌفكر فقط في المشتركين بالموقع الخاص بك لكن الفكرة التي طرحتها تُمكن حتى الزوار الذيين لم يفتحو بعد حساب لهم في الموقع أن يشتركو في النشرة البريدية الخاصة بالموقع.1 نقطة
-
1 نقطة
-
يمكنك جلب امتداد الملف عن طريق تقسيم اسم الملف بهذا الشكل $name = explode('.', $_FILES["file"]["name"]); ثم يمكنك برمجة كود ما ليقوم بوضع اسم بشكل عشوائي ويمكن استخدام الكود الذي أرفقته أنت بهذا الشكل $fileName = substr(md5(uniqid(rand(), true)),3,10); ثم يمكنك استخدام دالة end لجلب أخر عنصر في المصفوفة بهذا الشكل $end = end($name); ثم يمكنك دمج المتغيرات ببعضها بهذا الشكل $name = explode('.', $_FILES["file"]["name"]); $fileName = substr(md5(uniqid(rand(), true)),3,10); $end = end($name); $newName = $fileName . '.' . $end; ثم في دالة move_uploaded_file يمكنك وضع الاسم الجديد move_uploaded_file($_FILES["file"]["tmp_name"], $newName);1 نقطة
-
للأسف لا يمكن لأحد أن يعطيك سعرا تقريبيا للتطبيق دون معرفة تفاصيل أكثر عن هذا التطبيق, هناك عدة أسئلة يجب طرحها لمعرفة كيفية تسعير تطبيقك, ما هو مجال اختصاص التطبيق ؟ هل التطبيق مبني بطريقة احترافية و خالي من الثغرات و المشاكل البرمجية ؟ كم من الوقت و الجهد استغرق انشاء هذا التطبيق ؟ أما بالنسبة للفرق بين بيع التطبيق و بين تنزيله على حسابك الخاص في المتجر, فهذا يعتمد على الطريقة التي يتبعها تطبيقك لتحقيق المداخيل, هل التطبيق يوفر عمليات الشراء داخله ؟ ام هل يحتوي على اعلانات ؟ و هل هو موجه للمستخدمين في كل أنحاء العالم أم فقط لفئة معينة, لأن الفئة المستهدفة هي التي تحدد مدى نجاح التطبيق و تحدد حجم المداخيل الممكن توقعها.1 نقطة
-
لم أجد في توثيق np.sort. لنفترض أن لدي مصفوفة رقمية عشوائية تحتوي على أعداد صحيحة، كالتالي على سبيل المثال: >>> arr = np.random.randint(1,10, 10) >>> arr array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4]) إذا قمت بترتيبها، فسأحصل على ترتيب تصاعدي افتراضيًا، كالتالي: >>> np.sort(arr) array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7]) لكني أريد أن يتم ترتيبها تنازليًا. أعلم أنه يمكنني القيام بما يلي: reverse_order = np.sort(arr)[::-1] ولكن هل هذا الحل الأخير فعال؟ ألا تقوم بإنشاء نسخة بترتيب تصاعدي، ثم تقوم بعكس هذه النسخة للحصول على النتيجة بترتيب معكوس؟ إذا كان هذا هو الحال بالفعل، فهل هناك بديل فعال؟ لا يبدو أن np.sort يقبل معاملات لتغيير علامة المقارنات في عملية الترتيب للحصول على الأشياء بترتيب عكسي.1 نقطة
-
سلام عليكم قمت ببرمجة الزر بحيث تتغير قيمته الى قيمة ال value الخاصة بال option الذي اختاره من ال selectbox <select id ="embroiderys-value" class="form-control embroiderys-value p-0 " required> <option selected disabled> تحديد التطريز </option> <?php $result = $conn->query("SELECT * FROM embroidery"); while ($row = $result->fetch_assoc()) { echo '<option type="embroidery" img="' . $row['image'] . '" value="' . $row['id'] . '">كود التطريز E' . $row['id'] . '</option>'; } ?> </select> <div class="col-3 p-0"> <button type="button" class="btn btn-warning" onclick="showDetails()">إستعراض التفاصيل</button> </div> و السكربت كالتالي function showDetails() { var sel = document.getElementById('embroiderys-value'); var option = sel.options[sel.selectedIndex].value; window.open("accessories/tatreez/tatreez-view.php?id="+option); } الان لما المستخدم يقوم باختيار معين من ال select box لا توجد مشكلة فهو يأخذه الى الصفحة التي اريدها و ياخذ رقم ال id من قيمة ال selected option tatreez-view.php?id="selected option value" لكن لو لم يختار شئ و ضغط على عرض التفاصيل فمفيش option و بالتالي بيفتحله صفحة ليس لها شئ tatreez-view.php?id=تحديد%20التطريز انا اريد وضع شرط انه لو المستخدم ما اختارش اختيار من اللي موجودين الزر يبقى غير مفعل او يظهر له رساله مفادها انه لم يتم تحديد اختيار لعرضه ازاي اعملها فضلا؟1 نقطة
-
يمكن عمل الأمر على الخطوات التالية، تعريف مصفوفة تحوي روابط (مسارات الصور) var images = [ "https://www.img1...", "https://www.img2...", "https://www.img3...", ] ثم نأخذ مرجع للعنصر في الصفحة الذي نضع له الخلفية: var imageHead = document.getElementById("image-head"); ^^^^^^^^^^^^^ استخدم اسم المعرف Id للعنصر لديك (أو ضع له واحد مخصص) ثم شيفرة جافاسكربت: var i = 0; setInterval(function() { imageHead.style.backgroundImage = "url(" + images[i] + ")"; i = i + 1; if (i == images.length) { i = 0; } }, 1000); setInterval: هي دالة جافاسكربت، تأخذ function وتقوم باستدعائه كل مدة زمنية (الوسيط الثاني).. i هي متغير يحمل رقم الصورة، وعند كل تكرار (استدعاء كل 1 ثانية) سيتم جلب مسار الصورة المطلوبة (التالية) وإسنادها للخاصية bacjground img وهذا يعمل على تعديل الصورة، عند وصول i لآهر المصفوفة نعيدها ل 0 لأول صورة1 نقطة
-
لدي مصفوفة عددية تحتوي على: arr = np.array([1, 2, 3]) أريد إنشاء مصفوفة تحتوي على: [1, 2, 3, 1] وهذا يعني أنني أريد إضافة العنصر الأول إلى نهاية المصفوفة. لقد جربت الحل التالي: np.concatenate((arr, arr[0])) لكن ظهر لي الخطأ التالي: ValueError: arrays must have same number of dimensions لا أفهم لماذا ظهر هذا الخطأ، كلا المصفوفتان أحادية البعد 1d.1 نقطة
-
من فضلكم لدي هدا الجدول كيف اخلي مثلا عدد الاسطر فيه تظهر 10 وفوق 10 ينتقل للصفحة التانيةعبر الازرار تحت الجدول 1>2>3>4>5>6>7>8>9.....الخ <!--Grid Form--> <div class="flex flex-1 flex-col md:flex-row lg:flex-row mx-2"> <div class="mb-2 border-solid border-gray-300 rounded border shadow-sm w-full"> <div class="bg-gray-200 px-2 py-3 border-solid border-gray-200 border-b"> Full Table </div> <div class="p-3"> <table class="table-responsive w-full rounded"> <thead> <tr> <th class="border w-1/9 px-4 py-2">#</th> <th class="border w-1/9 px-4 py-2">رقم الطلب</th> <th class="border w-1/6 px-4 py-2">نوع الشحن</th> <th class="border w-1/6 px-4 py-2">قيمة الشحن</th> <th class="border w-1/6 px-4 py-2">رقم id اللاعب</th> <th class="border w-1/6 px-4 py-2">اسم اللاعب</th> <th class="border w-1/6 px-4 py-2">التوقيت</th> <th class="border w-1/7 px-4 py-2">الحالة</th> <th class="border w-1/6 px-4 py-2">شكوى</th> </tr> </thead> <tbody> <tr> <td class="border px-1 py-2">1</td> <td class="border px-4 py-2">1</td> <td class="border px-4 py-2">MS</td> <td class="border px-4 py-2">900 $</td> <td class="border px-4 py-2">132467976</td> <td class="border px-4 py-2">RAIDOO</td> <td class="border px-4 py-2">14-08-2021</td> <td class="border px-4 py-2"> <i class="fas fa-check text-green-500 mx-2"></i> </td> <td class="border px-4 py-2"> <a class="bg-teal-300 cursor-pointer rounded p-1 mx-1 text-white"> <i class="fas fa-eye"></i></a> <a class="bg-teal-300 cursor-pointer rounded p-1 mx-1 text-white"> <i class="fas fa-edit"></i></a> <a class="bg-teal-300 cursor-pointer rounded p-1 mx-1 text-red-500"> <i class="fas fa-trash"></i> </a> </td> </tr> </tbody> </table> </div> </div> </div> <!--/Grid Form-->1 نقطة
-
قمت بنفس العمل لاكن يحدث خلل في شكل الصفحة مثل الخط يصبح صغير جدا تقارب الكلمات يعني التنسيق يصبح مخرب باقي الصفحة هل بسبب تداخل1 نقطة
-
اعمل مع NextJS ورأيت مثالاً لصفحة class IndexPage extends Component { static async getInitialProps(context) { return {}; } render() { return <div>hello world</div>; } } export default withRouter(IndexPage); ما هي بالضبط طريقة getInitialProps في NextJS؟1 نقطة
-
بالتأكيد ليس بحجم الدورة لكن ستساعدك على البدء أو ممكن تساعدك على الوصول إلى مرحلة متوسطة أو أعلى على حسب تطورك1 نقطة
-
لا مجرد جدول قمت بنسخه فقط لا استعمل الاطار <!--Grid Form--> <div class="flex flex-1 flex-col md:flex-row lg:flex-row mx-2"> <div class="mb-2 border-solid border-gray-300 rounded border shadow-sm w-full"> <div class="bg-gray-200 px-2 py-3 border-solid border-gray-200 border-b"> Full Table </div> <div class="p-3"> <table class="table-responsive w-full rounded"> <thead> <tr> <th class="border w-1/9 px-4 py-2">#</th> <th class="border w-1/9 px-4 py-2">رقم الطلب</th> <th class="border w-1/6 px-4 py-2">نوع الشحن</th> <th class="border w-1/6 px-4 py-2">قيمة الشحن</th> <th class="border w-1/6 px-4 py-2">رقم id اللاعب</th> <th class="border w-1/6 px-4 py-2">اسم اللاعب</th> <th class="border w-1/6 px-4 py-2">التوقيت</th> <th class="border w-1/7 px-4 py-2">الحالة</th> <th class="border w-1/9 px-4 py-2">شكوى</th> </tr> </thead> <tbody> <?php error_reporting(0); $count = 0; $query = "SELECT * FROM `ordermag` where ordercase = '1' and typecharge ='freefire' and user_id = '$userid' order by id desc"; $result = mysqli_query($conn, $query); $output = ' '; if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_array($result)) { $card_no = $row['card_no']; $count++; ?> <tr> <td class="border px-1 py-2"><?php echo $count; ?></td> <td class="border px-4 py-2"><?php echo $row['id']; ?></td> <td class="border px-4 py-2"><?php echo $row['typecharge']; ?></td> <td class="border px-4 py-2"><?php echo $row['amount'] ?></td> <td class="border px-4 py-2"><?php echo $row['playerid']; ?></td> <td class="border px-4 py-2"><?php echo $row['playername'] ?></td> <td class="border px-4 py-2"><?php echo $row['creat_at']; ?></td> <td class="border px-4 py-2"> <i class="fas fa-check text-green-500 mx-2"></i> </td> <td class="border px-4 py-2"> <button class="btn " data-order="<?php echo $row['id'] ?>" data-toggle="modal" data-target="#modaldemo7"><i class="fa fa-exclamation-triangle fa-lg text-yellow"></i> </button> </td> </tr> </tbody> <?php } } ?> </table> </div> </div> </div> <!--/Grid Form--> اريد مثل ماهي في الموقع ده لاكن ماتضبط معي ماعرفت طريقة التركيب https://datatables.net/extensions/responsive/examples/styling/bootstrap4.html1 نقطة
-
اريد اضافته في داش بورد وفي اماكن الكتابة راح تكون php1 نقطة
-
اهلا بك اخي الكريم شاكر لك الغالي فعلا انا كنت لم اعمل سيرفر للخدمه بعد ان قمت بعمل سيرفر في موقع ابل اصبح يعمل1 نقطة
-
إن استخدام HTML - CSS لعمل رسوميات هو أمر خاص جداً وليس شائعاً، وللأسف لايوجد في دورات أكاديمية حسوب أي شروحات بما يخض هذا، بل تركز الدورات على تعليم عدة مستويات من هذه التقنيات، من شرح الأساسيات لاستخدام إطارت العمل وتخصيصها وتعليم SASS وهذه الأمور هي الأكثر أهمية في مجال العمل.. إن تعلمت الأساسيات جيداً ستصبح قادرا على تصميم مواقع انترنت بتصاميم مميزة، ومع الوقت ستتعلم تصميم رسوميات معقدة، مع العلم تحتاج إلمام جيد بالرياضيات والهندسة لتستطيع التعامل مع الأشكال الهندسية و الزوايا بمرونة.. وكما يقول الرسام بابلو بيكاسو : " اتقن القواعد كمحترف ، حتى تتمكن من كسرها كفنان" حيث أن عمل رسوميات هو جاني تصميمي إبداعي وليس برمجي، لا يمكن تعلم الفن والذوق، إنما هذه مهارات شخصية فقط تحتاج لأساسيات التقنية المستخدمة.1 نقطة
-
أين هو المجلد العام لمشروع nextjs؟ أعني ، هل هناك مكان ما يمكنني وضع favicon.png فيه ، أو التحقق من موقع google ، أو manifest.json ، أو robots.txt ، وما إلى ذلك؟1 نقطة
-
في هذه الجزء :: com.aboutyou.dart_packages.sign_in_with_apple.SignInWithAppleCallback ^^^^^^^^^ متغير حسب اسم المشروع لديك عدل اسم حزمة التطبيق ليتم إعادة التوجيه للبرنامج ثم للحزمة لتعالج الطلبية* إن لم تعمل، redirectUri خطأ، أنت تعيد البيانات لرابط غير مرتبط بمشروعك أو تطبيقك، حاول متابعة التوثيق في جزء: WebAuthenticationOptions.redirectUri intent://callback?${PARAMETERS FROM CALLBACK BODY}#Intent;package=YOUR.PACKAGE.IDENTIFIER;scheme=signinwithapple;end ******* في apple console حاول تحويل المشروع ل production ويجب تفعيل Sign with Apple لتعمل خارج نظام أبل بعمل تعديلات لكل من Identifier Service ID glitch web app1 نقطة
-
السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع قمت بعمل كود لتسجيل الدخول من خلال حساب ابل الى التطبيق الكود شغال لا توجد مشكله ولكني احتاج الى تمرير الايميل مثلا او الاسم بعد تسجيل دخول المستخدم بنجاح او قراتهم من خلال الامر print ولكني حاولت فعل ذلك ولم ينجح الامر لا اعلم ما هو الخطاء ب ضبط. الكود المستعمل كالتالي : Future<User> signInWithApple() async { final rawNonce = generateNonce(); final nonce = sha256ofString(rawNonce); try { final appleCredential = await SignInWithApple.getAppleIDCredential( scopes: [ AppleIDAuthorizationScopes.email, AppleIDAuthorizationScopes.fullName, ], nonce: nonce, ); final oauthCredential = OAuthProvider("apple.com").credential( idToken: appleCredential.identityToken, rawNonce: rawNonce, ); final authResult = await _firebaseAuth.signInWithCredential(oauthCredential); final displayName = '${appleCredential.givenName} ${appleCredential.familyName}'; print('ssssssssss $displayName');//======================================================== final userEmail = '${appleCredential.email}'; final firebaseUser = authResult.user; await firebaseUser.updateProfile(displayName: displayName); await firebaseUser.updateEmail(userEmail); return firebaseUser; } catch (exception) { print(exception); } } } كيف يمكن قراءة الايميل في هذا الحالة او الاسم؟ مع العلم انني حاولت ذلك بشكل التالي: print('ssssssssss $displayName'); كما هو واضح ايضا في الكود اعلاه ولكني احصل على null في كل مره1 نقطة