كيفية اكتشاف ما إذا كان البريد الإلكتروني هو حساب Google؟

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

سؤال

أنا وبعض اللاعبين هنا يعملون في بداية. نحن نستخدم حاليًا Google OpenID API لإدارة التسجيل وتسجيل الدخول إلى تطبيقنا ، لكننا نريد الترحيل إلى نموذج تسجيل مستخدم أسهل. ولهذا ، نحتاج إلى معرفة ما إذا كانت هناك طريقة يمكننا اكتشافها إذا كان بريدًا إلكترونيًا (وليس Gmail) هو حساب Google بالفعل. هل هناك طريقة للحصول على هذه المعلومات من Google Single Sign-On API؟

شكر سابق لمساعدتكم! قون

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

المحلول

لا يمكنك فعل ذلك. لا أعتقد أن Google يمكن أن تخبرك بذلك بدون موافقة المستخدم.

ومع ذلك ، يمكنك معرفة ما إذا كان المجال هو مجال تطبيقات Google AA عن طريق استخدام هذا كعنوان URL للاكتشاف:https://www.google.com/accounts/o8/site-xrds؟hd=mail.moztw.org

لاحظ أن مسؤول المجال قد لا يقوم بتثبيت دعم مفتوح بشكل صحيح للمجال. ناقشت شريحة بلدي هذا بالتفصيل:http://www.slideshare.net/timdream/google-apps-account-as-openid

نصائح أخرى

إذا كنت على جهاز Mac ، فتح محطة وادخل $ host {example.com} لتحديد ما إذا كانت Google البريد الإلكتروني تستضيفها.

فمثلا:

$ host yelp.com
yelp.com has address 104.16.57.23
yelp.com has address 104.16.56.23
yelp.com mail is handled by 1 ASPMX.L.GOOGLE.com.
yelp.com mail is handled by 10 ASPMX2.GOOGLEMAIL.com.
yelp.com mail is handled by 10 ASPMX5.GOOGLEMAIL.com.
yelp.com mail is handled by 10 ASPMX3.GOOGLEMAIL.com.
yelp.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.
yelp.com mail is handled by 10 ASPMX4.GOOGLEMAIL.com.
yelp.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com.

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

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

لقد عملت على اقتراح دوغ وهو يعمل. فقط تأكد من أن المستخدم (الفعال) الذي يستدعي الوظيفة له الحق في الاتصال بـ AddViewer. خدعة لإنجاز ذلك هي التأكد من أن الروتين يسمى من روتين الزناد ، وبالتالي فإن صاحب البرنامج النصي هو المستخدم الفعال.

function checkIfGoogleAccount(emailAddress) {
  try {
    SpreadsheetApp.getActiveSpreadsheet().addViewer(emailAddress) ;
    SpreadsheetApp.getActiveSpreadsheet().removeViewer(emailAddress) ;
    return true ;
  }
  catch(err) {
    return false ;
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top