ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

المصادقة باستخدام Twitter على iOS

يمكنك السماح للمستخدمين بالمصادقة مع Firebase باستخدام موفري OAuth مثل Twitter من خلال دمج تسجيل دخول OAuth العام في تطبيقك باستخدام Firebase SDK لتنفيذ تدفق تسجيل الدخول من البداية إلى النهاية.

قبل ان تبدأ

لتسجيل دخول المستخدمين باستخدام حسابات Twitter ، يجب أولاً تمكين Twitter كموفر تسجيل دخول لمشروع Firebase الخاص بك:

  1. أضف Firebase إلى مشروع iOS الخاص بك .
    pod 'Firebase/Auth'
    
  2. في وحدة تحكم Firebase ، افتح قسم المصادقة .
  3. في علامة تبويب طريقة تسجيل الدخول ، قم بتمكين موفر تويتر .
  4. أضف مفتاح API وسر واجهة برمجة التطبيقات من وحدة تحكم مطور هذا الموفر إلى تهيئة الموفر:
    1. سجّل تطبيقك كتطبيق مطور على Twitter واحصل على مفتاح OAuth API وسر API للتطبيق.
    2. تأكد من تعيين عنوان URL لإعادة توجيه my-app-12345.firebaseapp.com/__/auth/handler OAuth (على سبيل المثال ، my-app-12345.firebaseapp.com/__/auth/handler ) كعنوان URL لمعاودة الاتصال في صفحة إعدادات التطبيق في تهيئة تطبيق Twitter .
  5. انقر فوق حفظ .

تعامل مع تدفق تسجيل الدخول باستخدام Firebase SDK

للتعامل مع تدفق تسجيل الدخول باستخدام Firebase iOS SDK ، اتبع الخطوات التالية:

  1. أضف مخططات URL مخصصة إلى مشروع Xcode الخاص بك:

    1. افتح تكوين المشروع الخاص بك: انقر نقرًا مزدوجًا فوق اسم المشروع في عرض الشجرة الأيسر. حدد التطبيق الخاص بك من قسم الأهداف ، ثم حدد علامة التبويب المعلومات ، وقم بتوسيع قسم أنواع عناوين URL .
    2. انقر فوق الزر + ، وأضف مخطط URL لمعرف العميل المعكوس. للعثور على هذه القيمة ، افتح ملف تكوين GoogleService-Info.plist ، وابحث عن مفتاح REVERSED_CLIENT_ID . انسخ قيمة هذا المفتاح ، والصقها في مربع أنظمة URL في صفحة التكوين. اترك الحقول الأخرى فارغة.

      عند الانتهاء ، يجب أن يبدو التكوين الخاص بك مشابهًا لما يلي (ولكن مع القيم الخاصة بالتطبيق):

  2. أنشئ مثيلاً لـ OAuthProvider باستخدام معرف المزود twitter.com .

    سويفت

        var provider = OAuthProvider(providerID: "twitter.com")
        

    ج موضوعية

        FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"twitter.com"];
        
  3. اختياري : حدد معلمات OAuth المخصصة الإضافية التي تريد إرسالها مع طلب OAuth.

    سويفت

        provider.customParameters = [
          "lang": "fr"
          ]
        

    ج موضوعية

        [provider setCustomParameters:@{@"lang": @"fr"}];
        

    للحصول على المعلمات التي يدعمها Twitter ، راجع توثيق Twitter OAuth . لاحظ أنه لا يمكنك تمرير معلمات setCustomParameters المطلوبة باستخدام setCustomParameters . هذه المعلمات CLIENT_ID، redirect_uri، RESPONSE_TYPE ونطاقها والدولة.

  4. اختياري : إذا كنت ترغب في تخصيص الطريقة التي يقدم بها تطبيقك SFSafariViewController أو UIWebView عند عرض reCAPTCHA للمستخدم ، فأنشئ فئة مخصصة تتوافق مع بروتوكول FIRAuthUIDelegate ، وقم getCredentialWithUIDelegate:completion: إلى getCredentialWithUIDelegate:completion:

  5. المصادقة مع Firebase باستخدام كائن موفر OAuth.

    سويفت

        provider.getCredentialWith(nil) { credential, error in
          if error != nil {
            // Handle error.
          }
          if credential != nil {
            Auth().signIn(with: credential) { authResult, error in
              if error != nil {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }
          }
        }
        

    ج موضوعية

        [provider getCredentialWithUIDelegate:nil
                                   completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
          if (error) {
           // Handle error.
          }
          if (credential) {
            [[FIRAuth auth] signInWithCredential:credential
                                      completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
              if (error) {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }];
          }
        }];
        

    باستخدام رمز الوصول OAuth المميز ، يمكنك استدعاء Twitter API .

    على سبيل المثال ، للحصول على معلومات الملف الشخصي الأساسية ، يمكنك استدعاء واجهة برمجة تطبيقات REST ، لتمرير رمز الوصول في رأس Authorization :

    https://api.twitter.com/labs/1/users?usernames=TwitterDev
    
  6. بينما تركز الأمثلة أعلاه على تدفقات تسجيل الدخول ، يمكنك أيضًا ربط موفر Twitter بمستخدم حالي. على سبيل المثال ، يمكنك ربط عدة موفرين لنفس المستخدم مما يسمح لهم بتسجيل الدخول باستخدام أي منهما.

    سويفت

        Auth().currentUser.link(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    ج موضوعية

        [[FIRAuth auth].currentUser
            linkWithCredential:credential
                    completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        
  7. يمكن استخدام نفس النمط مع إعادة reauthenticateWithCredential والذي يمكن استخدامه لاسترداد بيانات اعتماد جديدة للعمليات الحساسة التي تتطلب تسجيل دخول حديثًا.

    سويفت

        Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    ج موضوعية

        [[FIRAuth auth].currentUser
            reauthenticateWithCredential:credential
                              completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        

الخطوات التالية

بعد قيام المستخدم بتسجيل الدخول لأول مرة ، يتم إنشاء حساب مستخدم جديد وربطه ببيانات الاعتماد - أي اسم المستخدم وكلمة المرور أو رقم الهاتف أو معلومات موفر المصادقة - المستخدم الذي قام بتسجيل الدخول باستخدام. يتم تخزين هذا الحساب الجديد كجزء من مشروع Firebase الخاص بك ، ويمكن استخدامه لتحديد هوية مستخدم عبر كل تطبيق في مشروعك ، بغض النظر عن كيفية تسجيل المستخدم للدخول.

  • في تطبيقاتك ، يمكنك الحصول على معلومات ملف تعريف المستخدم الأساسية من كائن FIRUser . انظر إدارة المستخدمين .

  • في قاعدة بيانات Firebase Realtime وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي سجّل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام موفري مصادقة متعددين عن طريق ربط بيانات اعتماد موفر المصادقة بحساب مستخدم حالي.

لتسجيل خروج مستخدم ، اتصل signOut:

سويفت

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

ج موضوعية

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

قد ترغب أيضًا في إضافة رمز معالجة الأخطاء للنطاق الكامل من أخطاء المصادقة. راجع معالجة الأخطاء .