مرحباً،
في اليومين الماضيين كنت أحاول فهم كيفية عمل OpenID بالاقتران مع Line: https://developers.line.biz/en/reference/line-login/ ، لذلك قمت بتثبيت openid
مستند اكتشاف OpenID Connect لـ Line موجود هنا:
https://access.line.me/.well-known/openid-configuration
لقد قمت بإعداد نطاقات openid profile و email.
وفقًا لـ line.biz، فإن عنوان البريد الإلكتروني موجود في الرمز المميز (token). وكل شيء يبدو جيدًا حتى الآن عندما أنظر إلى سجلاتي.
لقد حصلت على عنوان البريد الإلكتروني في ملف JWT المستخرج من الرمز المميز (token)
مثل:
سجل OIDC: تم التحقق من JWT —
iss: https://access.line.me
sub: Uf3156a0081c563144b3
aud: ‘1657458025’
exp: 1662826967
iat: 1662823367
nonce: f5930aa4c2bd1b3807d
amr:
- linesso
email: example@example.com
ولكن بعد طلب https://api.line.me/oauth2/v2.1/userinfo
لم يتم تضمين عنوان البريد الإلكتروني. فقط الاسم ومعرف المستخدم الفرعي (sub UserId).
نظرة على مستندات Line تحت userinfo تبدو صحيحة. لا يتضمن userinfo البريد الإلكتروني.
إذًا، ماذا يمكنني أن أفعل لاستخراج عنوان البريد الإلكتروني في استجابة JWT؟ لقد حاولت استخدام المطالبات (claims) وربما هناك طريقة للحصول عليها لم أكتشفها؟ أم أن هذا سيذهب سدى؟ هذا يجعلني أشعر بالدوار ![]()
شكرا لك!
تعديل:
قرأت على صفحة إضافة OpenID: openid
إذا تضمن مستند الاكتشاف معلمة userinfo_endpoint، فسيستخدم المكون الإضافي هذا لجمع بيانات تعريف المستخدم. إذا لم يكن الأمر كذلك، فسيقوم المكون الإضافي باستخراج بيانات التعريف من id_token (ملف JWT) المقدم من نقطة نهاية الرمز المميز (token endpoint).
لذلك، أحد الحلول هو إخبار المكون الإضافي بعدم استخدام نقطة نهاية userinfo؟ سيكون ذلك رائعًا. ولكن كيف يمكنني فعل ذلك؟