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

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

لربط تطبيق بموقع إلكتروني، يجب تأكيد عمليات الربط من خلال استضافة ملف Digital Asset Links على موقعك الإلكتروني وإضافة رابط إلى ملف Digital Asset Link في ملف البيان.

من خلال استضافة بيان "روابط مواد العرض الرقمية" على موقعك الإلكتروني، يتم أيضًا تفعيل موقعك الإلكتروني لمشاركة بيانات الملء التلقائي مع تطبيقك عند تشغيله على الإصدار 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 بشكل دوري مما إذا كانت الارتباطات التي تم إرسالها من خلال النموذج صالحة، وقد تتواصل معك في حال حدوث أي مشاكل.

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

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

يمكنك ربط عدة تطبيقات بموقع إلكتروني من خلال تحديد كل تطبيق في ملف رابط مواد العرض الرقمية. على سبيل المثال، لربط تطبيقَي 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>
    

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

يمكنك ربط تطبيقات بعدة مواقع إلكترونية من خلال تحديد كل موقع إلكتروني في ملف Digital Asset Links واستضافة الملف على كل موقع إلكتروني. على سبيل المثال، لربط تطبيقَي 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>