تسجيل دخول فيسبوك لنظام Android - البدء السريع

تتيح مجموعة Facebook SDK لنظام Android للأشخاص إمكانية تسجيل الدخول إلى تطبيقك باستخدام تسجيل دخول فيسبوك. وعندما يسجل الأشخاص الدخول إلى تطبيقك عبر فيسبوك، يمكنهم منح أذونات لتطبيقك حتى تتمكن من استرداد المعلومات أو تنفيذ إجراءات على فيسبوك نيابةً عنهم.

للتعرف على مثال لمشروع يوضح كيفية دمج تسجيل دخول فيسبوك في تطبيق Android، راجع FBLoginSample على GitHub.

اتبع الخطوات التالية لإضافة تسجيل دخول فيسبوك إلى تطبيقك.

‏1.‏ تسجيل الدخول

يرجى تسجيل الدخول إلى فيسبوك لإنشاء تطبيقات أو التسجيل كمطور.

2. تنزيل تطبيق فيسبوك

قم بتنزيل تطبيق فيسبوك بالنقر على الزر التالي.

3. دمج مجموعة Facebook SDK

تعتبر مجموعة SDK لتسجيل دخول Facebook لنظام Android إحدى مكونات مجموعة Facebook SDK لنظام Android. لاستخدام مجموعة SDK لتسجيل دخول Facebook في مشروعك، يجب إضافتها كعنصر تابع في Maven أو تنزيلها. لدعم التغييرات في نظام Android 11، استخدم مجموعة SDK بالإصدار 8.1 أو إصدار أحدث.

استخدام Maven

  1. في مشروعك، افتح your_app > Gradle Scripts > build.gradle (Project) وتأكد من وجود المستودع التالي في buildscript { repositories {}}:
    mavenCentral() 
    
  2. في مشروعك، افتح your_app > Gradle Scripts > build.gradle (Module: app) وأضف عبارة التنفيذ التالية إلى القسم dependencies{} للاعتماد على آخر إصدار من مجموعة SDK لتسجيل دخول فيسبوك:
     implementation 'com.facebook.android:facebook-login:latest.release'
    
  3. أنشئ مشروعك.

4. تعديل الموارد وملف البيانات

إذا كنت تستخدم مجموعة Facebook SDK لنظام Android بالإصدار 5.15 أو الإصدارات الأحدث، فلن تحتاج إلى إضافة أي نشاط أو الفلترة الهدف في علامات التبويب المخصصة في Chrome. ويتم تضمين هذه الوظيفة في مجموعة SDK.

بعد دمج تسجيل دخول فيسبوك، يتم تسجيل بعض من أحداث التطبيق وتجميعها في مدير الأحداث، ما لم تقم بتعطيل التسجيل التلقائي لحدث التطبيق. للحصول على المزيد من التفاصيل حول المعلومات التي يتم تجميعها وكيفية تعطيل التسجيل التلقائي لحدث التطبيق، يمكنك الرجوع إلى التسجيل التلقائي لحدث التطبيق.

يمكنك إنشاء سلاسل أحرف لمعرف تطبيق فيسبوك وللمعرفات المطلوبة بغرض تمكين علامات التبويب المخصصة في Chrome. وقم أيضًا بإضافة FacebookActivity إلى ملف بيانات Android.
  1. افتح الملف /app/res/values/strings.xml.
  2. أضف عناصر string مع الأسماء facebook_app_id وfb_login_protocol_scheme وfacebook_client_token وقم بتعيين القيم إلى معرف التطبيق ورمز البرنامج. على سبيل المثال، إذا كان معرف تطبيقك 1234 ورمز البرنامج 56789، فسيبدو الرمز البرمجي كما يلي:
    <string name="facebook_app_id">1234</string>
    <string name="fb_login_protocol_scheme">fb1234</string>
    <string name="facebook_client_token">56789</string>
    
    
  3. افتح الملف /app/manifest/AndroidManifest.xml.
  4. أضف عناصر meta-data إلى العنصر application لمعرف تطبيقك ورمز البرنامج:
    <application android:label="@string/app_name" ...>
        ...
       	<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
       	<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
    
  5. أضف نشاطًا إلى فيسبوك وفلتر نشاط وهدف لعلامات تبويب Chrome المخصصة في عنصر application لديك:
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
    
  6. أضف عنصر uses-permission إلى ملف البيانات الموجود بعد عنصر application:
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
  7. (اختياري) لإلغاء اشتراك إذن معرف الإعلان، أضف عنصر uses-permission إلى ملف البيانات الموجود بعد العنصر application:
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
            
  8. يمكنك بشكل مباشر تعيين التسجيل التلقائي لأحداث التطبيق على "true" أو "false" عن طريق تعيين العلامة AutoLogAppEventsEnabled كمفتاح في AndroidManifest.xml.

  9. أنشئ مشروعك.

5. ربط اسم الحزمة والفئة الافتراضية بتطبيقك

يجب ‏تسجيل الدخول‏ لإكمال هذه الخطوة.

6. إدخال مفاتيح تجزئة التطوير والإصدار الخاصة بتطبيقك

يجب ‏تسجيل الدخول‏ لإكمال هذه الخطوة.

7. تمكين تسجيل الدخول الأحادي لتطبيقك

يجب ‏تسجيل الدخول‏ لإكمال هذه الخطوة.

8. إضافة الزر تسجيل دخول فيسبوك

تتمثل أبسط طريقة لإضافة تسجيل دخول فيسبوك إلى تطبيقك في إضافة LoginButton من مجموعة SDK. يُعد LoginButton عنصر واجهة مستخدم يتضمن الوظائف المتوفرة في LoginManager. وعندما ينقر شخص ما على الزر، يتم تشغيل تسجيل الدخول من خلال الأذونات التي تم تعيينها في LoginManager. يتطلب تسجيل دخول فيسبوك إذن public_profile متقدمًا ليتم استخدامه بواسطة المستخدمين الخارجيين. ويتبع الزر حالة تسجيل الدخول، ويعرض النص الصحيح بناءً على حالة مصادقة الشخص.
لإضافة زر تسجيل دخول فيسبوك، قم أولاً بإضافة الزر إلى ملف XML للتخطيط:
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

9. تسجيل عملية استدعاء

قم الآن بإنشاء callbackManager لمعالجة عمليات استجابة تسجيل الدخول من خلال استدعاء CallbackManager.Factory.create.
callbackManager = CallbackManager.Factory.create();
إذا كنت تحاول إضافة الزر إلى جزء، فيجب عليك أيضًا تحديث نشاطك لاستخدام الجزء الخاص بك. يمكنك تخصيص خصائص Login button وتسجيل عملية استدعاء في الأسلوب onCreate() أو onCreateView(). تشتمل الخصائص التي يمكنك تخصيصها على LoginBehavior وDefaultAudience وToolTipPopup.Style والأذونات الموجودة في LoginButton. على سبيل المثال:
      
    private static final String EMAIL = "email";
      
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList(EMAIL));
    // If you are using in a fragment, call loginButton.setFragment(this);    

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
للاستجابة إلى نتيجة تسجيل الدخول، يجب تسجيل عملية استدعاء باستخدام LoginManager أو LoginButton. إذا قمت بتسجيل عملية الاستدعاء باستخدام LoginButton، فلن تحتاج إلى تسجيل عملية الاستدعاء في مدير تسجيل الدخول.
يمكنك إضافة عملية استدعاء LoginManager إلى نشاطك أو إلى الأسلوب onCreate() الخاصة بالجزء:
    callbackManager = CallbackManager.Factory.create();      
      
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
إذا نجح تسجيل الدخول، تحصل المعلمة LoginResult على AccessToken الجديد، وأحدث الأذونات الممنوحة أو المرفوضة.
لا تحتاج إلى registerCallback لكي يتم تسجيل الدخول بنجاح، ويمكنك اتباع تغييرات رمز الوصول الحالي الذي يتضمن الفئة AccessTokenTracker الموضحة أدناه.
وأخيرًا، في الأسلوب onActivityResult، يمكنك استدعاء callbackManager.onActivityResult لإدخال نتائج تسجيل الدخول في LoginManager عبر callbackManager.

إذا كنت تستخدم أجزاء أو أنشطة AndroidX، فلا داعي لتجاوز "onActivityResult".

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
يجب على أي نشاط وجزء تقوم بدمجه باستخدام مجموعة FacebookSDK لتسجيل الدخول أو المشاركة أن يعمل على إعادة توجيه onActivityResult إلى callbackManager.

10. التحقق من حالة تسجيل الدخول

لا يمكن لتطبيقك تسجيل دخول أكثر من شخص كل مرة ويقوم LoginManager بتعيين AccessToken الحالي وProfile لهذا الشخص. تحفظ مجموعة FacebookSDK هذه البيانات في التفضيلات المشتركة وتقوم بتعيينها عند بداية الجلسة. يمكنك معرفة ما إذا كان الشخص قد سجل دخوله بالفعل من خلال فحص AccessToken.getCurrentAccessToken() وProfile.getCurrentProfile().
يمكنك تحميل AccessToken.getCurrentAccessToken باستخدام مجموعة SDK من ذاكرة التخزين المؤقت أو من إشارة مرجعية بالتطبيق عند تشغيله من البداية. ينبغي التحقق من صلاحيته من طريقة onCreate التي تخص Activity:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
بعد ذلك يمكنك تنفيذ تسجيل الدخول الفعلي، مثلما يحدث في OnClickListener للزر المخصص:
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. تمكين تسجيل الدخول السريع

يعمل تسجيل الدخول السريع على تسجيل دخول الأشخاص باستخدام حسابهم على Facebook عبر الأجهزة والمنصات المختلفة. إذا سجل شخص ما الدخول إلى تطبيقك على نظام Android ثم حاول تغيير الأجهزة بعد ذلك، فسيعمل تسجيل الدخول السريع على تسهيل تسجيل دخوله باستخدام حساب Facebook، بدلاً من مطالبته بتحديد طريقة تسجيل الدخول. ويساعد ذلك على تجنب إنشاء حسابات مكررة أو فشل تسجيل الدخول تمامًا. لدعم التغييرات في نظام Android 11، أضف أولاً الرمز البرمجي التالي إلى العنصر queries في ملف /app/manifest/AndroidManifest.xml لديك.
  
<queries> <package android:name="com.facebook.katana" /> </queries>   
ويوضح الرمز البرمجي التالي كيفية تمكين تسجيل الدخول السريع.
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });   

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

تهانينا، لقد أضفت تسجيل دخول فيسبوك إلى تطبيقك لنظام Android! تأكد من الرجوع إلى صفحات الوثائق الأخرى لدينا للاطلاع على دلائل إرشادية أكثر تقدمًا.
قم بتنفيذ استدعاء حذف بيانات اتصال للرد على طلب الأشخاص بحذف بيانات الاتصال الخاصة بهم من فيسبوك.
تتبع رموز وصول المستخدمين وملفاتهم الشخصية.
يمكنك إدارة البيانات التي يمكن لتطبيقك الوصول إليها من خلال تسجيل دخول فيسبوك.
هل تواجه مشكلة في دمج تسجيل دخول فيسبوك؟ راجع قائمة المشكلات الشائعة وكيفية حلها.
استنادًا إلى بيانات فيسبوك التي تطلبها من الأشخاص الذين يستخدمون تسجيل دخول فيسبوك، قد يتعين عليك تقديم تطبيقك للمراجعة قبل طرحه.
لإنشاء دفق تسجيل الدخول الخاص، راجع إنشاء دفق تسجيل دخول يدويًا.