ملء صور المستخدمين الرمزية باستخدام Microsoft Graph Oauth2

مرحبًا يا أصدقاء ديسكورد اللطفاء،

لقد استخدمت discourse-oauth2-basic للسماح لأعضائنا بتسجيل الدخول وتعبئة قيم البريد الإلكتروني والاسم الكامل واسم المستخدم تلقائيًا من حسابهم المؤسسي في Office365. إلا أنني أواجه صعوبة في تعبئة الصورة الرمزية (avatar)، وأتساءل عما إذا كان أي شخص قد نجح في تحقيق ذلك؟

تقترح إرشادات Graph هنا أن رابط الصورة الرمزية يجب أن يكون متاحًا في photo/$value؛ وقد قمت بإدخاله، لكنه لا يتم إرجاعه، ولا أرى أي أخطاء في السجلات.

إعداداتي الحالية هي:

…كما جربت إضافة ‘photo’ إلى حقول oauth2 callback user info paths و oauth2 authorize options دون جدوى. أي مساعدة ستكون موضع تقدير كبير :wink:

إعجاب واحد (1)

يقتصر مكون OAuth2 الإضافي على طلب البيانات من نقطة نهاية واحدة فقط (عنوان URL الخاص ببيانات JSON للمستخدم في OAuth2). تشير جميع إعدادات json *** path إلى مواقع داخل بيانات JSON، وليس إلى نقاط نهاية API منفصلة.

عند إلقاء نظرة سريعة على وثائق واجهة برمجة تطبيقات graph.microsoft.com، يبدو أن نقطة النهاية /me لا تتضمن عنوان URL للصورة الشخصية افتراضيًا. وحتى إذا تمكنت من جلب مورد profilePhoto، يبدو أنه يعيد “معرف الصورة” بدلاً من عنوان URL.

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

إعجابَين (2)

شكرًا لك على التحقق من ذلك، @david. دفعني ذلك لأرى ما إذا كان بإمكاني ‘استرجاع’ (fetch) الصورة ضمن ملف تعريف المستخدم JSON. يبدو أن معامل استعلام OData للتوسيع غير مدعوم للصورة، رغم أنها تظهر كرابط URL إذا أرفقت /$value بها:

…لا يمكنك استخدام $expand على علاقة user/photo.

لم أستطع إيجاد طريقة لعكس ذلك؛ لذا بدلاً من https://graph.microsoft.com/beta/me?$expand=photo أن تصبح شيئًا مثل https://graph.microsoft.com/beta/me/photo/$value?$expand=mail,displayName. اهتزاز، ألعاب خارج العربة، غضب.

ربما يمكننا استخدام موقع ‘mail’ في بيانات JSON لبناء رابط الصورة، والذي يكون ثابتًا دائمًا على النحو التالي:

https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/adam_pope_arup_com_LThumb.jpg

…إذن، هل يمكننا دمج العناصر الثلاثة في الحقل باستخدام الصيغة الصحيحة؟ لم تنجح محاولتي الغبية هنا، كما هو متوقع:

https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/” & mail & “_LThumb.jpg”

…أو ربما طريقة أخرى - وأنا أتحامل بوضوح على القشة هنا - هي إضافة نقطة نهاية الصورة إلى حقل URL الخاص بـ oauth2 user json بشيء مثل:

https://graph.microsoft.com/v1.0/me?https://graph.microsoft.com/v1.0/me/photo

إعجاب واحد (1)