تحذير: يتم توفير هذه البيانات في إطار سياسة بيانات المستخدم جوجل . يرجى مراجعة والامتثال للسياسة. قد يؤدي عدم القيام بذلك إلى تعليق المشروع أو الحساب.

تسجيل الدخول على أجهزة التلفزيون وأجهزة الإدخال المحدودة

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

يعرض التطبيق رمزًا قصيرًا وعنوان URL لتسجيل الدخول للمستخدم. بعد ذلك ، يفتح المستخدم عنوان URL لتسجيل الدخول في مستعرض ويب ، ويُدخل الرمز ، ويمنح إذن التطبيق للوصول إلى معلومات تسجيل دخول المستخدم. أخيرًا ، يتلقى التطبيق تأكيدًا ويتم تسجيل دخول المستخدم.

لاستخدام تدفق تسجيل الدخول هذا ، يجب تشغيل التطبيق على جهاز يفي بالمعايير التالية:

  • يجب أن يكون الجهاز قادرًا على عرض عنوان URL مكون من 40 حرفًا ورمز مستخدم مكونًا من 15 حرفًا ، بالإضافة إلى إرشادات للمستخدم.
  • يجب أن يكون الجهاز متصلاً بالإنترنت.

احصل على معرّف العميل وسر العميل

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

للعثور على معرّف العميل وسر العميل لمشروعك ، قم بما يلي:

  1. حدد بيانات اعتماد OAuth 2.0 موجودة أو افتح صفحة بيانات الاعتماد .
  2. إذا لم تكن قد قمت بذلك بالفعل ، فأنشئ بيانات اعتماد OAuth 2.0 لمشروعك بالنقر فوق إنشاء بيانات اعتماد> معرّف عميل OAuth ، وتقديم المعلومات اللازمة لإنشاء بيانات الاعتماد.
  3. ابحث عن معرّف العميل في قسم معرّفات عميل OAuth 2.0 . للحصول على التفاصيل ، انقر فوق معرّف العميل.

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

الحصول على رمز المستخدم وعنوان URL للتحقق

بمجرد أن يطلب المستخدم تسجيل الدخول باستخدام حساب Google ، يمكنك الحصول على رمز المستخدم وعنوان URL للتحقق عن طريق إرسال طلب HTTP POST إلى نقطة نهاية جهاز OAuth 2.0 ، https://oauth2.googleapis.com/device/code . قم بتضمين معرف العميل الخاص بك وقائمة بالنطاقات التي تحتاجها مع الطلب. إذا كنت تريد فقط تسجيل دخول المستخدمين بحساباتهم على Google ، فاطلب فقط profile التعريف ونطاقات email ؛ أو ، إذا كنت ترغب في طلب إذن للاتصال بواجهة برمجة تطبيقات مدعومة نيابة عن المستخدمين ، فاطلب النطاقات المطلوبة بالإضافة إلى نطاقات profile التعريف email .

فيما يلي مثال لطلب رمز مستخدم:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

باستخدام curl :

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

يتم إرجاع الرد ككائن JSON:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

يعرض تطبيقك user_code و verification_url للمستخدم ، وفي نفس الوقت ، يستقصي نقطة نهاية تسجيل الدخول في interval المحدد حتى يسجل المستخدم الدخول أو يمر الوقت المحدد بواسطة expires_in .

اعرض رمز المستخدم وعنوان URL للتحقق

بعد تلقي رمز المستخدم وعنوان URL للتحقق من نقطة نهاية الجهاز ، قم بعرضهما وإرشاد المستخدم لفتح عنوان URL وإدخال رمز المستخدم.

قيم عنوان URL verification_url و user_code عرضة للتغيير. صمم واجهة المستخدم الخاصة بك بطريقة يمكنها التعامل مع الحدود التالية:

  • يجب عرض user_code في حقل واسع بما يكفي للتعامل مع 15 حرفًا بحجم W
  • يجب أن يتم عرض verification_url في حقل واسع بما يكفي للتعامل مع سلسلة عنوان URL التي يبلغ طولها 40 حرفًا.

يمكن أن تحتوي كلتا السلسلتين على أي حرف قابل للطباعة من مجموعة أحرف US-ASCII.

عند عرض سلسلة user_code ، لا تقم بتعديل السلسلة بأي طريقة (مثل تغيير الحالة أو إدراج أحرف تنسيق أخرى) ، لأن تطبيقك قد يتعطل إذا تغير تنسيق الرمز في المستقبل.

يمكنك تعديل سلسلة verification_url عن طريق تجريد المخطط من عنوان URL لأغراض العرض إذا اخترت ذلك. إذا فعلت ذلك ، فتأكد من أن تطبيقك يمكنه التعامل مع كلا المتغيرين "http" و "https". لا تقم بتعديل سلسلة verification_url .

عندما ينتقل المستخدم إلى عنوان URL للتحقق ، يرى صفحة مشابهة لما يلي:

قم بتوصيل الجهاز عن طريق إدخال رمز

بعد أن يُدخل المستخدم رمز المستخدم ، يقدم موقع تسجيل الدخول إلى Google شاشة موافقة مماثلة لما يلي:

مثال على شاشة الموافقة لعميل الجهاز

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

الحصول على رمز معرف وتحديث الرمز المميز

بعد أن يعرض تطبيقك رمز المستخدم وعنوان URL للتحقق ، ابدأ في استقصاء نقطة نهاية الرمز المميز ( https://oauth2.googleapis.com/token ) باستخدام رمز الجهاز الذي تلقيته من نقطة نهاية الجهاز. استقصاء نقطة نهاية الرمز المميز عند الفاصل الزمني بالثواني المحدد بواسطة قيمة interval .

فيما يلي مثال لطلب:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

باستخدام curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

إذا لم يوافق المستخدم على الطلب بعد ، فسيكون الرد كما يلي:

{
  "error" : "authorization_pending"
}

يجب أن يكرر تطبيقك هذه الطلبات بمعدل لا يتجاوز قيمة interval . إذا كان تطبيقك يستقصي بسرعة كبيرة ، فستكون الاستجابة كما يلي:

{
  "error" : "slow_down"
}

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

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

عند استلام هذه الاستجابة ، يمكن لتطبيقك فك تشفير الرمز المميز للمعرف للحصول على معلومات الملف الشخصي الأساسية حول المستخدم الذي قام بتسجيل الدخول ، أو إرسال رمز المعرف إلى خادم الواجهة الخلفية لتطبيقك للمصادقة بشكل آمن مع الخادم. أيضًا ، يمكن لتطبيقك استخدام رمز الوصول للاتصال بواجهات Google APIs التي أذن بها المستخدم.

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

احصل على معلومات ملف تعريف المستخدم من الرمز المميز للمعرف

يمكنك الحصول على معلومات ملف التعريف حول المستخدم الذي قام بتسجيل الدخول عن طريق فك تشفير رمز المعرف مع أي مكتبة لفك تشفير JWT . على سبيل المثال ، باستخدام مكتبة JavaScript Auth0 jwt-decode :

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

معلومات اكثر

  • للاحتفاظ بتسجيل دخول المستخدمين إلى ما بعد عمر الرمز المميز للمعرف ، راجع تحديث رمز وصول .
  • إذا كنت بحاجة إلى المصادقة باستخدام خادم خلفية ، فراجع المصادقة باستخدام خادم خلفية للحصول على معلومات حول إجراء ذلك بشكل آمن.