نظرة عامة
تضيف الربط السلس لتسجيل الدخول باستخدام OAuth إلى Google تسجيل الدخول إلى ربط OAuth: ويوفر هذا تجربة ربط سلسة مستخدمي Google، وتمكّنهم أيضًا من إنشاء الحسابات، ما يتيح للمستخدم إنشاء حساب جديد على خدمتك باستخدام حسابه على Google.
لإجراء عملية ربط للحساب باستخدام OAuth وتسجيل الدخول باستخدام حساب Google، يُرجى اتّباع الخطوات التالية الخطوات:
- أولاً، اطلب من المستخدم منح موافقته على الوصول إلى ملفه الشخصي في Google.
- استخدِم المعلومات الواردة في الملف الشخصي للتحقّق من توفُّر حساب المستخدم.
- وبالنسبة إلى المستخدمين الحاليين، يمكنك ربط الحسابات.
- إذا لم تتمكن من العثور على مطابقة لمستخدم Google في نظام المصادقة لديك، والتحقق من صحة رمز المعرّف الذي تم استلامه من Google. يمكنك بعد ذلك إنشاء حساب مستخدم استنادًا إلى على معلومات الملف الشخصي المضمنة في الرمز المميز للمعرف.
![يوضّح هذا الشكل الخطوات التي يجب أن يتّبعها المستخدم لربط حسابه على Google باستخدام عملية الربط المبسّطة. تعرض لقطة الشاشة الأولى كيف يمكن للمستخدم اختيار تطبيقك لربطه. تسمح لقطة الشاشة الثانية للمستخدم بتأكيد ما إذا كان لديه حساب حالي على خدمتك أم لا. تتيح لقطة الشاشة الثالثة للمستخدم اختيار حساب Google الذي يريد الربط به. تعرض لقطة الشاشة الرابعة تأكيد ربط حساب Google بتطبيقك. تعرض لقطة الشاشة الخامسة حساب مستخدم تم ربطه بنجاح في تطبيق Google.](https://developers.google.cn/static/identity/account-linking/images/streamlined-linking-flow.png?authuser=9&hl=ar)
الشكل 1. ربط الحساب على هاتف المستخدم باستخدام ميزة "الربط المبسّط"
متطلبات الربط المبسّط
- نفِّذ مسار ربط OAuth على الويب. يجب أن تتوافق خدمتك مع OAuth 2.0. نقاط نهاية التفويض وتبادل الرمز المميز.
- يجب أن تتوافق نقطة نهاية تبادل الرموز المميّزة مع تأكيدات رمز JSON المميّز للويب (JWT) وتنفيذ الأغراض على
check
وcreate
وget
.
تنفيذ خادم OAuth
يجب أن تتوافق نقطة نهاية تبادل الرمز المميّز مع أهداف check
أو create
أو get
. يوضِّح ما يلي الخطوات المكتملة من خلال عملية ربط الحساب، ويشير إلى وقت استدعاء الأهداف المختلفة:
- هل لدى المستخدم حساب في نظام المصادقة لديك؟ (يختار المستخدم "نعم" أو "لا")
- نعم : هل يستخدم المستخدم البريد الإلكتروني المرتبط بحسابه على Google لتسجيل الدخول إلى منصتك؟ (يختار المستخدم "نعم" أو "لا")
- نعم : هل لدى المستخدم حساب مطابق في نظام المصادقة لديك؟ (يتم استدعاء
check intent
للتأكيد)- نعم : يتمّ الاتصال بـ
get intent
وربط الحساب في حال إرجاع intent بنجاح. - لا : هل تريد إنشاء حساب جديد؟ (يختار المستخدم "نعم" أو "لا")
- نعم : يتمّ الاتصال بـ
create intent
وربط الحساب في حال إرجاع intent بنجاح. - لا : يتم بدء مسار OAuth على الويب، ويتم توجيه المستخدم إلى المتصفّح، ويُتاح للمستخدم خيار الربط بعنوان بريد إلكتروني مختلف.
- نعم : يتمّ الاتصال بـ
- نعم : يتمّ الاتصال بـ
- لا : يتم تشغيل مسار OAuth على الويب، ويتم توجيه المستخدم إلى المتصفّح، ويُتاح للمستخدم خيار الربط بعنوان بريد إلكتروني مختلف.
- نعم : هل لدى المستخدم حساب مطابق في نظام المصادقة لديك؟ (يتم استدعاء
- لا : هل لدى المستخدم حساب مطابق في نظام المصادقة لديك؟ (يتم استدعاء
check intent
للتأكيد)- نعم : يتمّ الاتصال بـ
get intent
وربط الحساب في حال إرجاع intent بنجاح. - لا : يتم استدعاء
create intent
وربط الحساب في حال إرجاع نية الشراء بنجاح.
- نعم : يتمّ الاتصال بـ
- نعم : هل يستخدم المستخدم البريد الإلكتروني المرتبط بحسابه على Google لتسجيل الدخول إلى منصتك؟ (يختار المستخدم "نعم" أو "لا")
التحقّق من توفّر حساب مستخدم حالي (التحقّق من النية)
بعد أن يمنح المستخدِم موافقته على الوصول إلى ملفه الشخصي في Google، ترسل Google طلب يتضمن تأكيدًا موقَّعًا على هوية مستخدم Google. تشير رسالة الأشكال البيانية يحتوي تأكيد البيانات على معلومات تشتمل على رقم تعريف حساب المستخدم على Google، والاسم وعنوان البريد الإلكتروني. نقطة نهاية تبادل الرموز المميّزة التي تم ضبطها المشروع أن يتعامل مع هذا الطلب.
في حال توفُّر حساب Google المناسب في المصادقة
فإن نقطة نهاية تبادل الرمز المميز تستجيب باستخدام account_found=true
. إذا كانت
لا يتطابق حساب Google مع مستخدم حالي، نقطة نهاية تبادل الرموز المميّزة
تعرض الخطأ HTTP 404 لم يتم العثور على الصفحة مع account_found=false
.
يكون الطلب بالشكل التالي:
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=check&assertion=JWT&scope=SCOPES&client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET
يجب أن تتمكّن نقطة نهاية تبادل الرموز المميّزة من معالجة المَعلمات التالية:
مَعلمات نقطة نهاية الرمز المميّز | |
---|---|
intent |
بالنسبة إلى هذه الطلبات، تكون قيمة هذه المعلمة
check |
grant_type |
تمثّل هذه السمة نوع الرمز المميّز الذي يتم تبادله. بالنسبة لهذه الطلبات، سيتم
المعلَمة urn:ietf:params:oauth:grant-type:jwt-bearer . |
assertion |
يشير هذا المصطلح إلى رمز JSON المميّز للويب (JWT) ويقدِّم تأكيدًا موقَّعًا على بيانات وهوية المستخدم. يحتوي JWT على معلومات تتضمن عنوان URL الخاص رقم تعريف حساب Google والاسم وعنوان البريد الإلكتروني |
client_id |
معرِّف العميل الذي عيّنته لـ Google. |
client_secret |
سر العميل الذي خصّصته لـ Google. |
للردّ على طلبات intent لـ check
، يجب أن تنفِّذ نقطة نهاية تبادل الرموز المميّزة الخطوات التالية:
- التحقق من صحة تأكيد JWT وفك ترميزه
- تحقَّق مما إذا كان حساب Google متوفّرًا من قبل في نظام المصادقة.
التحقق من صحة تأكيد JWT وفك ترميزه
يمكنك التحقق من صحة تأكيد JWT وفك ترميزه باستخدام مكتبة فك ترميز JWT بلغتك. استخدام مفاتيح Google العامة، متاحة في JWK أو PEM، للتأكّد من توقيع الرمز المميز.
عند فك ترميز النص، يظهر تأكيد JWT على النحو التالي:
{ "sub": "1234567890", // The unique ID of the user's Google Account "iss": "https://accounts.google.com", // The assertion's issuer "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID "iat": 233366400, // Unix timestamp of the assertion's creation time "exp": 233370000, // Unix timestamp of the assertion's expiration time "name": "Jan Jansen", "given_name": "Jan", "family_name": "Jansen", "email": "jan@gmail.com", // If present, the user's email address "email_verified": true, // true, if Google has verified the email address "hd": "example.com", // If present, the host domain of the user's GSuite email address // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ", "locale": "en_US" // User's locale, from browser or phone settings }
بالإضافة إلى التحقّق من توقيع الرمز المميّز، تأكَّد من أنّ التأكيد
جهة الإصدار (الحقل iss
) هي https://accounts.google.com
، بحيث يمكن لشريحة الجمهور
(الحقل aud
) هو معرّف العميل الذي تم تعيينه، ولم تنتهِ صلاحية الرمز المميّز.
(حقل exp
).
باستخدام الحقول email
وemail_verified
وhd
، يمكنك تحديد ما إذا كان
تستضيف Google عناوين البريد الإلكتروني وموثوقًا بها. في الحالات التي تواجه فيها Google
موثوقية المستخدم المعروف حاليًا بأنه صاحب الحساب الشرعي
ويمكنك تخطي كلمة المرور أو طرق التحديات الأخرى. بخلاف ذلك، فإن هذه الطرق
يمكن استخدامها للتحقّق من الحساب قبل ربطه
الحالات التي تكون فيها Google موثوقة:
- السمة
email
هي اللاحقة@gmail.com
، وهذا حساب Gmail. email_verified
صحيح وتم ضبطhd
، هذا حساب G Suite.
يمكن للمستخدمين التسجيل للحصول على حسابات Google بدون استخدام Gmail أو G Suite. فعندما
لا يحتوي email
على اللاحقة @gmail.com
وhd
غير موجود في Google
موثوقة وكلمة المرور أو طرق التحقق الأخرى للتحقق
المستخدم. يمكن أن يكون email_verified
صحيحًا أيضًا لأن Google تحققت في البداية من صحة
المستخدم عند إنشاء حساب Google، ولكن ملكية الجهة الخارجية
ربما تغير حساب بريدك الإلكتروني منذ ذلك الحين.
التأكّد من توفّر حساب Google في نظام المصادقة
تحقق مما إذا كان أي من الشروط التالية صحيحًا:
- رقم تعريف حساب Google، الوارد في حقل
sub
في التأكيد، موجود في حساب المستخدم. قاعدة البيانات. - يتطابق عنوان البريد الإلكتروني الوارد في التأكيد مع مستخدم في قاعدة بيانات المستخدم الخاصة بك.
في حال استيفاء أيٌّ من الشروط، يعني هذا أنّ المستخدم قد اشترك في الخدمة من قبل. في هذه الحالة، إرجاع رد مثل ما يلي:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8 { "account_found":"true", }
إذا لم يكن معرّف حساب Google أو عنوان البريد الإلكتروني المحددَين في
تطابق تأكيد مع مستخدم في قاعدة البيانات الخاصة بك، لم يشترك المستخدم بعد. ضِمن
في هذه الحالة، تحتاج نقطة نهاية تبادل الرمز المميّز إلى الردّ مع عرض خطأ HTTP 404
تحدّد هذه السمة "account_found": "false"
، كما في المثال التالي:
HTTP/1.1 404 Not found Content-Type: application/json;charset=UTF-8 { "account_found":"false", }
التعامل مع الربط التلقائي (تحقيق النية)
بعد أن يمنح المستخدِم موافقته على الوصول إلى ملفه الشخصي في Google، ترسل Google طلب يتضمن تأكيدًا موقَّعًا على هوية مستخدم Google. تشير رسالة الأشكال البيانية يحتوي تأكيد البيانات على معلومات تشتمل على رقم تعريف حساب المستخدم على Google، والاسم وعنوان البريد الإلكتروني. نقطة نهاية تبادل الرموز المميّزة التي تم ضبطها المشروع أن يتعامل مع هذا الطلب.
في حال توفُّر حساب Google المناسب في المصادقة
فإن نقطة نهاية تبادل الرمز المميز تقوم بإرجاع رمز مميز للمستخدم. إذا كانت
لا يتطابق حساب Google مع مستخدم حالي، نقطة نهاية تبادل الرموز المميّزة
تعرض الخطأ linking_error
وعرض login_hint
اختياري.
يكون الطلب بالشكل التالي:
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=get&assertion=JWT&scope=SCOPES&client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET
يجب أن تتمكّن نقطة نهاية تبادل الرموز المميّزة من معالجة المَعلمات التالية:
مَعلمات نقطة نهاية الرمز المميّز | |
---|---|
intent |
بالنسبة إلى هذه الطلبات، تكون قيمة هذه المَعلمة هي get . |
grant_type |
تمثّل هذه السمة نوع الرمز المميّز الذي يتم تبادله. بالنسبة لهذه الطلبات، سيتم
المعلَمة urn:ietf:params:oauth:grant-type:jwt-bearer . |
assertion |
يشير هذا المصطلح إلى رمز JSON المميّز للويب (JWT) ويقدِّم تأكيدًا موقَّعًا على بيانات وهوية المستخدم. يحتوي JWT على معلومات تتضمن عنوان URL الخاص رقم تعريف حساب Google والاسم وعنوان البريد الإلكتروني |
scope |
اختياري: أي نطاقات تم ضبط Google فيها للطلب منها المستخدمين. |
client_id |
معرِّف العميل الذي عيّنته لـ Google. |
client_secret |
سر العميل الذي خصّصته لـ Google. |
للردّ على طلبات intent لـ get
، يجب أن تنفِّذ نقطة نهاية تبادل الرموز المميّزة الخطوات التالية:
- التحقق من صحة تأكيد JWT وفك ترميزه
- تحقَّق مما إذا كان حساب Google متوفّرًا من قبل في نظام المصادقة.
التحقق من صحة تأكيد JWT وفك ترميزه
يمكنك التحقق من صحة تأكيد JWT وفك ترميزه باستخدام مكتبة فك ترميز JWT بلغتك. استخدام مفاتيح Google العامة، متاحة في JWK أو PEM، للتأكّد من توقيع الرمز المميز.
عند فك ترميز النص، يظهر تأكيد JWT على النحو التالي:
{ "sub": "1234567890", // The unique ID of the user's Google Account "iss": "https://accounts.google.com", // The assertion's issuer "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID "iat": 233366400, // Unix timestamp of the assertion's creation time "exp": 233370000, // Unix timestamp of the assertion's expiration time "name": "Jan Jansen", "given_name": "Jan", "family_name": "Jansen", "email": "jan@gmail.com", // If present, the user's email address "email_verified": true, // true, if Google has verified the email address "hd": "example.com", // If present, the host domain of the user's GSuite email address // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ", "locale": "en_US" // User's locale, from browser or phone settings }
بالإضافة إلى التحقّق من توقيع الرمز المميّز، تأكَّد من أنّ التأكيد
جهة الإصدار (الحقل iss
) هي https://accounts.google.com
، بحيث يمكن لشريحة الجمهور
(الحقل aud
) هو معرّف العميل الذي تم تعيينه، ولم تنتهِ صلاحية الرمز المميّز.
(حقل exp
).
باستخدام الحقول email
وemail_verified
وhd
، يمكنك تحديد ما إذا كان
تستضيف Google عناوين البريد الإلكتروني وموثوقًا بها. في الحالات التي تواجه فيها Google
موثوقية المستخدم المعروف حاليًا بأنه صاحب الحساب الشرعي
ويمكنك تخطي كلمة المرور أو طرق التحديات الأخرى. بخلاف ذلك، فإن هذه الطرق
يمكن استخدامها للتحقّق من الحساب قبل ربطه
الحالات التي تكون فيها Google موثوقة:
- السمة
email
هي اللاحقة@gmail.com
، وهذا حساب Gmail. email_verified
صحيح وتم ضبطhd
، هذا حساب G Suite.
يمكن للمستخدمين التسجيل للحصول على حسابات Google بدون استخدام Gmail أو G Suite. فعندما
لا يحتوي email
على اللاحقة @gmail.com
وhd
غير موجود في Google
موثوقة وكلمة المرور أو طرق التحقق الأخرى للتحقق
المستخدم. يمكن أن يكون email_verified
صحيحًا أيضًا لأن Google تحققت في البداية من صحة
المستخدم عند إنشاء حساب Google، ولكن ملكية الجهة الخارجية
ربما تغير حساب بريدك الإلكتروني منذ ذلك الحين.
التأكّد من توفّر حساب Google في نظام المصادقة
تحقق مما إذا كان أي من الشروط التالية صحيحًا:
- رقم تعريف حساب Google، الوارد في حقل
sub
في التأكيد، موجود في حساب المستخدم. قاعدة البيانات. - يتطابق عنوان البريد الإلكتروني الوارد في التأكيد مع مستخدم في قاعدة بيانات المستخدم الخاصة بك.
في حال العثور على حساب للمستخدم، عليك إصدار رمز دخول وعرض القيم في كائن JSON في نص استجابة HTTPS، كما في المثال التالي:
{ "token_type": "Bearer", "access_token": "ACCESS_TOKEN", "expires_in": SECONDS_TO_EXPIRATION }
في بعض الحالات، قد يتعذّر على المستخدم ربط الحساب استنادًا إلى الرمز المميّز للمعرّف. إذا كان
لأي سبب من الأسباب، تحتاج نقطة نهاية تبادل الرمز المميز إلى الرد باستخدام HTTP
401 يحدد الخطأ error=linking_error
، كما يبيِّن المثال التالي:
HTTP/1.1 401 Unauthorized Content-Type: application/json;charset=UTF-8 { "error":"linking_error", "login_hint":"foo@bar.com" }
عندما تتلقّى Google ردًّا بالخطأ 401 مع linking_error
، ترسل Google
المستخدِم إلى نقطة نهاية التفويض مع استخدام login_hint
كمَعلمة. تشير رسالة الأشكال البيانية
إكمال المستخدم لربط الحساب باستخدام مسار ربط OAuth في المتصفِّح
معالجة عملية إنشاء الحساب من خلال تسجيل الدخول بحساب Google (إنشاء هدف)
عندما يحتاج مستخدم إلى إنشاء حساب على خدمتك، تقدِّم Google طلبًا.
إلى نقطة نهاية تبادل الرمز المميّز التي تحدّد intent=create
.
يكون الطلب بالشكل التالي:
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded response_type=token&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=SCOPES&intent=create&assertion=JWT&client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET
يجب أن تتمكّن نقطة نهاية تبادل الرموز المميّزة من معالجة المَعلمات التالية:
مَعلمات نقطة نهاية الرمز المميّز | |
---|---|
intent |
بالنسبة إلى هذه الطلبات، تكون قيمة هذه المَعلمة هي create . |
grant_type |
تمثّل هذه السمة نوع الرمز المميّز الذي يتم تبادله. بالنسبة لهذه الطلبات، سيتم
المعلَمة urn:ietf:params:oauth:grant-type:jwt-bearer . |
assertion |
يشير هذا المصطلح إلى رمز JSON المميّز للويب (JWT) ويقدِّم تأكيدًا موقَّعًا على بيانات وهوية المستخدم. يحتوي JWT على معلومات تتضمن عنوان URL الخاص رقم تعريف حساب Google والاسم وعنوان البريد الإلكتروني |
client_id |
معرِّف العميل الذي عيّنته لـ Google. |
client_secret |
سر العميل الذي خصّصته لـ Google. |
إنّ JWT ضمن المَعلمة assertion
يحتوي على رقم تعريف حساب Google للمستخدِم.
والاسم وعنوان البريد الإلكتروني، اللذين يمكنك استخدامهما لإنشاء حساب جديد على
خدمة ما.
للردّ على طلبات intent لـ create
، يجب أن تنفِّذ نقطة نهاية تبادل الرموز المميّزة الخطوات التالية:
- التحقق من صحة تأكيد JWT وفك ترميزه
- تحقَّق من صحة معلومات المستخدم وأنشئ حسابًا جديدًا.
التحقق من صحة تأكيد JWT وفك ترميزه
يمكنك التحقق من صحة تأكيد JWT وفك ترميزه باستخدام مكتبة فك ترميز JWT بلغتك. استخدام مفاتيح Google العامة، متاحة في JWK أو PEM، للتأكّد من توقيع الرمز المميز.
عند فك ترميز النص، يظهر تأكيد JWT على النحو التالي:
{ "sub": "1234567890", // The unique ID of the user's Google Account "iss": "https://accounts.google.com", // The assertion's issuer "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID "iat": 233366400, // Unix timestamp of the assertion's creation time "exp": 233370000, // Unix timestamp of the assertion's expiration time "name": "Jan Jansen", "given_name": "Jan", "family_name": "Jansen", "email": "jan@gmail.com", // If present, the user's email address "email_verified": true, // true, if Google has verified the email address "hd": "example.com", // If present, the host domain of the user's GSuite email address // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ", "locale": "en_US" // User's locale, from browser or phone settings }
بالإضافة إلى التحقّق من توقيع الرمز المميّز، تأكَّد من أنّ التأكيد
جهة الإصدار (الحقل iss
) هي https://accounts.google.com
، بحيث يمكن لشريحة الجمهور
(الحقل aud
) هو معرّف العميل الذي تم تعيينه، ولم تنتهِ صلاحية الرمز المميّز.
(حقل exp
).
باستخدام الحقول email
وemail_verified
وhd
، يمكنك تحديد ما إذا كان
تستضيف Google عناوين البريد الإلكتروني وموثوقًا بها. في الحالات التي تواجه فيها Google
موثوقية المستخدم المعروف حاليًا بأنه صاحب الحساب الشرعي
ويمكنك تخطي كلمة المرور أو طرق التحديات الأخرى. بخلاف ذلك، فإن هذه الطرق
يمكن استخدامها للتحقّق من الحساب قبل ربطه
الحالات التي تكون فيها Google موثوقة:
- السمة
email
هي اللاحقة@gmail.com
، وهذا حساب Gmail. email_verified
صحيح وتم ضبطhd
، هذا حساب G Suite.
يمكن للمستخدمين التسجيل للحصول على حسابات Google بدون استخدام Gmail أو G Suite. فعندما
لا يحتوي email
على اللاحقة @gmail.com
وhd
غير موجود في Google
موثوقة وكلمة المرور أو طرق التحقق الأخرى للتحقق
المستخدم. يمكن أن يكون email_verified
صحيحًا أيضًا لأن Google تحققت في البداية من صحة
المستخدم عند إنشاء حساب Google، ولكن ملكية الجهة الخارجية
ربما تغير حساب بريدك الإلكتروني منذ ذلك الحين.
التحقق من صحة معلومات المستخدم وإنشاء حساب جديد
تحقق مما إذا كان أي من الشروط التالية صحيحًا:
- رقم تعريف حساب Google، الوارد في حقل
sub
في التأكيد، موجود في حساب المستخدم. قاعدة البيانات. - يتطابق عنوان البريد الإلكتروني الوارد في التأكيد مع مستخدم في قاعدة بيانات المستخدم الخاصة بك.
في حال استيفاء أيٌّ من الشروط، اطلب من المستخدم ربط حسابه الحالي.
باستخدام حساباتهم على Google. ولإجراء ذلك، استجب للطلب برسالة الخطأ HTTP 401
التي تحدّد error=linking_error
وتمنح عنوان البريد الإلكتروني للمستخدم
login_hint
فيما يلي نموذج للرد:
HTTP/1.1 401 Unauthorized Content-Type: application/json;charset=UTF-8 { "error":"linking_error", "login_hint":"foo@bar.com" }
عندما تتلقّى Google ردًّا بالخطأ 401 مع linking_error
، ترسل Google
المستخدِم إلى نقطة نهاية التفويض مع استخدام login_hint
كمَعلمة. تشير رسالة الأشكال البيانية
إكمال المستخدم لربط الحساب باستخدام مسار ربط OAuth في المتصفِّح
إذا لم يكن أي من الشرطين صحيحًا، عليك إنشاء حساب مستخدم جديد باستخدام المعلومات. المقدمة في JWT. لا يتم عادةً ضبط كلمة مرور للحسابات الجديدة. من المهم ننصح بإضافة حساب Google إلى المنصات الأخرى ليتمكّن المستخدمون من سجِّل الدخول باستخدام حساب Google على مختلف مساحات عرض تطبيقك. بدلاً من ذلك، يمكنك إرسال رسالة إلكترونية إلى المستخدم تتضمن رابطًا يبدأ مسار استرداد كلمة المرور للسماح المستخدم بتعيين كلمة مرور لتسجيل الدخول على أنظمة أساسية أخرى.
عند اكتمال الإنشاء، يمكنك إصدار رمز دخول وعرض القيم في كائن JSON نص استجابة HTTPS، كما في المثال التالي:
{ "token_type": "Bearer", "access_token": "ACCESS_TOKEN", "expires_in": SECONDS_TO_EXPIRATION }
الحصول على معرّف عميل Google API
سيُطلب منك تقديم معرّف العميل في Google API أثناء عملية التسجيل لربط الحساب.
للحصول على معرِّف عميل واجهة برمجة التطبيقات باستخدام المشروع الذي أنشأته أثناء إكمال خطوات ربط OAuth. للقيام بذلك، أكمل الخطوات التالية:
- افتح صفحة بيانات الاعتماد في وحدة تحكّم Google API:
أنشِئ مشروعًا في Google APIs أو اختَره.
إذا لم يكن مشروعك يتضمن معرِّف عميل لنوع تطبيق الويب، فانقر على إنشاء بيانات الاعتماد > معرِّف عميل OAuth لإنشاء معرِّف. تأكد من تضمين نطاق موقعك الإلكتروني في مربّع مصادر JavaScript المعتمَدة. عند إجراء اختبار محلي أو تطوير، يجب إضافة كل من
http://localhost
http://localhost:<port_number>
في حقل مصادر JavaScript المعتمَدة
التحقّق من صحة عملية التنفيذ
يمكنك التحقق من صحة التطبيق الخاص بك باستخدام ملعب أوث 2.0 الأداة.
في الأداة ، قم بالخطوات التالية:
- انقر فوق تكوين لفتح نافذة تكوين أوث 2.0.
- في مجال تدفق أوث، اختر من جانب العميل.
- في مجال أوث النهايات، حدد مخصص.
- حدد نقطة نهاية OAuth 2.0 ومعرف العميل الذي عينته لـ Google في الحقول المقابلة.
- في القسم الخطوة 1، لا تحدد أي نطاقات جوجل. بدلاً من ذلك ، اترك هذا الحقل فارغًا أو اكتب نطاقًا صالحًا لخادمك (أو سلسلة عشوائية إذا كنت لا تستخدم نطاقات OAuth). عند الانتهاء من ذلك، انقر فوق تخويل واجهات برمجة التطبيقات.
- في الأقسام الخطوة 2 و الخطوة 3، انتقل من خلال تدفق أوث 2.0 والتحقق من أن كل خطوة تعمل على النحو المنشود.
يمكنك التحقق من صحة التطبيق الخاص بك باستخدام حساب Google ربط تجريبي الأداة.
في الأداة ، قم بالخطوات التالية:
- انقر على تسجيل الدخول باستخدام زر جوجل.
- اختر الحساب الذي ترغب في ربطه.
- أدخل معرف الخدمة.
- اختياريًا ، أدخل نطاقًا واحدًا أو أكثر ستطلب الوصول إليه.
- انقر فوق ابدأ تجريبي.
- عند المطالبة ، أكد أنه يمكنك الموافقة ورفض طلب الربط.
- تأكد من إعادة توجيهك إلى النظام الأساسي الخاص بك.