العثور على عنوان URL صورة ملف تعريف Google عند تسجيل الدخول إلى استخدام مزود OpenID من Google

StackOverflow https://stackoverflow.com/questions/4004309

  •  25-09-2019
  •  | 
  •  

سؤال

هل هناك طريقة للعثور على صورة ملف تعريف المستخدم الذي قام بتسجيل الدخول باستخدام حساب Google الخاص به (من خلال OpenID).

لقد قمت بفحص StackOverflow ويبدو أنهم يستخدمون خدمة Gravatar لتعيين صورة رسمية لعنوان البريد الإلكتروني. ولكن يجب أن يكون من الممكن جلب صورة ملف تعريف Google مباشرة من Google.

أي فكرة؟

هل كانت مفيدة؟

المحلول

هذا غير ممكن مع OpenID وحده. لديك حلان:

  • لا تستخدم صورة Google Picture ، ولكن الصورة التي يقدمها طرف ثالث مثل Gravatar (إنها أبسط طريقة وهي ما يستخدمه Stackoverflow) ؛

  • يمكنك استخدام ملفات تعريف تطبيقات Google API: يرى هناك لاسترداد الصورة. في هذه الحالة ، يجب مصادقة المستخدم ، على سبيل المثال مع OAUTH البروتوكول: انظر وثائق Google هناك. إذا اخترت هذا الحل ، أفترض أنك ستستمر في استخدام OpenID ، لذلك ستستخدم OpenId و Oauth. تدعم Google بروتوكول هجين لتبسيط هذه العملية: بروتوكول هجين OpenID+Oauth.

أتمنى أن يساعد ...

نصائح أخرى

تحديث: حاليًا ، هذا النهج لا يعمل

أنا أستخدم هذا النهج حاليًا:

  1. حاول التحميل http://profiles.google.com/s2/photos/profile/me؟sz=32(SZ هو حجم الصورة)
  2. إذا فشل التحميل ، استخدم أيقونة Google Dummy
  3. لقد لاحظت أيضًا أنه إذا كنت بعد عرض Avatar تسجيل الدخول بحساب Google آخر ، فإن صورة Avatar لا تزال قديمة. لتجنب ذلك ، أقوم بإضافة "& cache_fix =" إلى عنوان URL.

    $(".social_avatar")
        .load(function() { $(".social_avatar").css('visibility', 'visible'); })
        .error(function() { $(".social_avatar").attr('src', "/dummy_google_icon.png"); })
        .css('visibility', 'hidden')
        .attr("src", "http://profiles.google.com/s2/photos/profile/me?sz=32&cache_fix=<userid>");
    

تحرير: لن يعمل هذا بعد الآن لأن Google Buzz تم إيقافهظللت الجواب هنا لأغراض تاريخية فقط.

https://www.googleapis.com/buzz/v1/people/[your google account name]/@self

ينتج عن ملف XML. يمكنك بعد ذلك الحصول على محتويات علامة <Thumbnailurl> ، والتي بدورها هي عنوان URL Thumbnail Thumbnail.

يرجى ملاحظة أنه يجب تسجيل الدخول إلى هذا العمل.

أتمنى أن يساعدك هذا

هناك واجهة برمجة التطبيقات التي توفرها http://www.avatarapi.com/ الذي يرجع اسم المستخدم وموافقة الموافقة المسبقة عن علم الملف الشخصي من عنوان بريد إلكتروني واستنادا إلى معلومات Google العامة.

يمكن استدعاؤه عبر SOAP أو HTTP في نقطة نهاية API هذه:http://www.avatarapi.com/avatar.asmx

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top