appleid

PHOTO EMBED

Thu Sep 19 2024 20:16:29 GMT+0000 (Coordinated Universal Time)

Saved by @mebean #flutter #laravel #api #http #2lancer

<?php
// تأكد من تثبيت مكتبة apple-signin-php باستخدام Composer
require_once 'vendor/autoload.php';

use AppleSignIn\ASDecoder;

// إعدادات قاعدة البيانات
$servername = "localhost";
$username = "nullsafety_app";
$password = "gQ0T(DHze!5L";
$dbname = "nullsafety_app";

// إعدادات Apple Sign In
$LOGIN_APPLE_CLIENT_ID = "io.fitness.club";
$LOGIN_APPLE_SECRET = "eyJraWQiOiJMQ1hESDJSTDJSIiwiYWxnIjoiRVMyNTYifQ.eyJpc3MiOiI2TFRESjJITldZIiwiaWF0IjoxNjk3MTQ2MDU2LCJleHAiOjE3MTI2OTgwNTYsImF1ZCI6Imh0dHBzOi8vYXBwbGVpZC5hcHBsZS5jb20iLCJzdWIiOiJpby5maXRuZXNzLmNsdWIifQ.D4YPbDBiRv76ToNUa9Lll1F82uohsgIUzIN4x-NBNahfZuC_A8LTNzFuaBDCBp4m5ohPa9eTc2xoK4NRJjWJWA";

// إنشاء اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الاتصال
if ($conn->connect_error) {
    die("فشل الاتصال: " . $conn->connect_error);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // استلام البيانات من Apple
    $id_token = $_POST['id_token'];
    
    try {
        // فك تشفير وتحقق من الـ token
        $appleSignInPayload = ASDecoder::getAppleSignInPayload($id_token);
        
        // استخراج معلومات المستخدم
        $email = $appleSignInPayload->getEmail();
        $user_id = $appleSignInPayload->getUser();
        // الاسم غير متوفر دائمًا، لذا نحتاج للتحقق
        $name = isset($_POST['user']) ? json_decode($_POST['user'])->name : null;
        
        // التحقق مما إذا كان المستخدم موجودًا بالفعل
        $stmt = $conn->prepare("SELECT id FROM users WHERE apple_id = ?");
        $stmt->bind_param("s", $user_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            // المستخدم موجود بالفعل، قم بتحديث المعلومات إذا لزم الأمر
            $stmt = $conn->prepare("UPDATE users SET email = ?, name = ? WHERE apple_id = ?");
            $stmt->bind_param("sss", $email, $name, $user_id);
        } else {
            // مستخدم جديد، قم بإدراجه في قاعدة البيانات
            $stmt = $conn->prepare("INSERT INTO users (apple_id, email, name) VALUES (?, ?, ?)");
            $stmt->bind_param("sss", $user_id, $email, $name);
        }
        
        if ($stmt->execute()) {
            echo "تم تسجيل الدخول وحفظ البيانات بنجاح!";
        } else {
            echo "حدث خطأ أثناء حفظ البيانات: " . $stmt->error;
        }
        
    } catch (Exception $e) {
        echo "حدث خطأ: " . $e->getMessage();
    }
}

$conn->close();
?>

<!DOCTYPE html>
<html>
<head>
    <title>تسجيل الدخول باستخدام Apple</title>
</head>
<body>
    <div id="appleid-signin" data-color="black" data-border="true" data-type="sign in"></div>
    <script type="text/javascript" src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
    <script type="text/javascript">
        AppleID.auth.init({
            clientId : '<?php echo $LOGIN_APPLE_CLIENT_ID; ?>',
            scope : 'name email',
            redirectURI : 'https://developer.null-safety.com/',
            state : 'YOUR_STATE_VALUE'
        });
    </script>
</body>
</html>
content_copyCOPY