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

إذا كان تطبيقك الذي يستخدم Smart Lock لكلمات المرور يشارك قاعدة بيانات المستخدمين مع موقعك الإلكتروني، أو إذا كان تطبيقك وموقعك الإلكتروني يستخدمان موفّري خدمة تسجيل الدخول الموحّد، مثل تسجيل الدخول بحساب Google، يمكنك ربط التطبيق بالموقع الإلكتروني بحيث يحفظ المستخدمون بيانات اعتمادهم مرة واحدة ثم يسجّلون الدخول تلقائيًا إلى كل من التطبيق والموقع الإلكتروني.

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

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

المتطلبات الأساسية

يجب أن يكون نطاق تسجيل الدخول إلى موقعك الإلكتروني متاحًا من خلال HTTPS.

ربط تطبيقك بموقعك الإلكتروني

  1. أنشئ ملف روابط مواد العرض الرقمية بتنسيق JSON.

    على سبيل المثال، للإشارة إلى أنّ الموقع الإلكتروني https://signin.example.com وتطبيق Android الذي يحمل اسم الحزمة com.example يمكنه مشاركة بيانات اعتماد تسجيل الدخول، يمكنك إنشاء ملف باسم assetlinks.json يتضمّن المحتوى التالي:

    [{
      "relation": ["delegate_permission/common.get_login_creds"],
      "target": {
        "namespace": "web",
        "site": "https://signin.example.com"
      }
     },
     {
      "relation": ["delegate_permission/common.get_login_creds"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example",
        "sha256_cert_fingerprints": [
          "F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
        ]
      }
     }]
    

    الحقل relation هو مصفوفة من سلسلة واحدة أو أكثر تصف العلاقة التي يتم تعريفها. للإشارة إلى أنّ التطبيقات والمواقع الإلكترونية تشارك بيانات اعتماد تسجيل الدخول، حدِّد السلسلة delegate_permission/common.get_login_creds.

    الحقل target هو كائن يحدّد مادة العرض التي ينطبق عليها التعريف. تحدّد الحقول التالية موقعًا إلكترونيًا:

    namespace web
    site

    عنوان URL للموقع الإلكتروني بالتنسيق https://domain[:optional_port]، على سبيل المثال، https://www.example.com.

    يجب أن تكون domain مؤهّلة بالكامل، ويجب حذف optional_port عند استخدام المنفذ 443 لبروتوكول HTTPS.

    لا يمكن أن يكون هدف site سوى نطاق جذر، ولا يمكنك حصر عملية ربط التطبيق بدليل فرعي محدّد. ولا تضمِّن مسارًا في عنوان URL، مثل الشرطة المائلة اللاحقة.

    لا تُعد النطاقات الفرعية مطابقة: أي إذا حدّدت domain على أنه www.example.com، لن يكون النطاق www.counter.example.com مرتبطًا بتطبيقك.

    تحدد الحقول التالية تطبيق Android:

    namespace android_app
    package_name اسم الحزمة الذي تم تعريفه في بيان التطبيق مثلاً: com.example.android
    sha256_cert_fingerprints الملفات المرجعية لشهادة SHA256 لشهادة توقيع تطبيقك يمكنك استخدام الأمر التالي لإنشاء الملف المرجعي:
    $ keytool -list -v -keystore my-release-key.keystore

    لمعرفة التفاصيل، يُرجى الاطّلاع على مرجع "روابط مواد العرض الرقمية".

  2. استضِف ملف رابط التنقل إلى مواد العرض الرقمية بتنسيق JSON في الموقع التالي على نطاق تسجيل الدخول:

    https://domain[:optional_port]/.well-known/assetlinks.json

    على سبيل المثال، إذا كان نطاق تسجيل الدخول هو signin.example.com، يمكنك استضافة ملف JSON على https://signin.example.com/.well-known/assetlinks.json.

    يجب أن يكون نوع MIME لملف رابط الأصول الرقمية بتنسيق JSON. تأكَّد من أنّ الخادم يرسل عنوان Content-Type: application/json في الاستجابة.

  3. تأكَّد من أنّ مضيفك يسمح لشركة Google باسترداد ملف رابط الأصول الرقمية. إذا كان لديك ملف robots.txt، يجب أن يسمح لوكيل Googlebot باسترداد /.well-known/assetlinks.json. يمكن لمعظم المواقع الإلكترونية السماح لأي وكيل مبرمَج باسترداد الملفات في مسار /.well-known/ حتى تتمكّن الخدمات الأخرى من الوصول إلى البيانات الوصفية في هذه الملفات:

    User-agent: *
    Allow: /.well-known/
    

  4. يجب الإفصاح عن عملية الربط في تطبيق Android.

    1. أضِف السطر التالي إلى ملف البيان ضمن <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. أضِف مورد سلسلة asset_statements إلى ملف strings.xml. السلسلة asset_statements هي كائن JSON يحدّد ملفات assetlinks.json المطلوب تحميلها. وعليك إلغاء أي فاصلات عليا وعلامات اقتباس تستخدمها في السلسلة. مثال:

        <string name="asset_statements" translatable="false">
        [{
          \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
        }]
        </string>
      
        > GET /.well-known/assetlinks.json HTTP/1.1
        > User-Agent: curl/7.35.0
        > Host: signin.example.com
      
        < HTTP/1.1 200 OK
        < Content-Type: application/json
      
  5. انشر التطبيق في "متجر Google Play". يجب إصداره في القناة العامة لكي يتم اختيار الجمعيات.

  6. (اختياري) أكمِل نموذج الانتساب في Smart Lock لكلمات المرور وأرسِله للإشارة إلى أنّك أجريت العملية. تتحقّق Google بشكل دوري مما إذا كانت الارتباطات التي يتم إرسالها من خلال النموذج تعمل فعليًا وقد تتواصل معك في حال حدوث مشاكل.

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

مثال: ربط تطبيقات متعددة بموقع إلكتروني

يمكنك ربط تطبيقات متعددة بموقع إلكتروني عن طريق تحديد كل تطبيق في ملف Digital Assets Link. على سبيل المثال، لربط التطبيقَين com.example وcom.example.pro بالموقع الإلكتروني على https://signin.example.com/، حدِّد كلا التطبيقَين في ملف JSON المستضاف في https://signin.example.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]

بعد ذلك، يمكنك الإعلان عن عملية الربط في كلا التطبيقين:

  1. أضِف السطر التالي إلى ملف البيان ضمن <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. أضِف مورد السلسلة التالي إلى ملف strings.xml:

    <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
    }]
    </string>
    

مثال: ربط التطبيقات بمواقع إلكترونية متعددة

يمكنك ربط تطبيقات بمواقع إلكترونية متعددة عن طريق تحديد كل موقع إلكتروني في ملف رابط الأصول الرقمية واستضافة الملف على كل موقع إلكتروني. على سبيل المثال، لربط التطبيقَين com.example وcom.example.pro بالموقع الإلكتروني على https://signin.example.com/ وhttps://m.example.com/، حدِّد كلا التطبيقَين والموقعَين معًا في ملف JSON الذي تتم استضافته في https://signin.example.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://m.example.com"
  },
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]

وبعد ذلك، عليك تضمين الملف الأساسي لروابط مواد العرض الرقمية في ملف JSON الذي تتم استضافته على https://m.example.com/.well-known/assetlinks.json:

[{
  "include": "https://signin.example.com/.well-known/assetlinks.json"
}]

أخيرًا، أعلِن عن عملية الربط في كلا التطبيقين:

  1. أضِف السطر التالي إلى ملف البيان ضمن <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. أضِف مورد السلسلة التالي إلى ملف strings.xml:

    <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
    }]
    </string>