כמו שהבטחתי אני אראה כיצד אפשר לעשות תהליך לוגין לאתר שלנו על ידי חברה אחרת, ואתחיל עם פייסבוק, ואדגיש אנחנו נתמקד כרגע במצב שבו אנחנו צריכים מזהה ייחודי עבור משתמש ולא מעניין אותנו מידע נוסף עליו (אע"פ שאפשר לקבל מהם מידע נוסף אם המשתמש מסכים לכך)
מידע נוסף על התהליך של לוגין עם פייסבוק תוכלו למצוא
כאן,
וכאן
לחצן לוגין של פייסבוק
כאן.
עטיפה של פקדי פייסבוק ב - net תוכלו למצוא
כאן.
השלבים לבצע לוגין עם פייסבוק הם פשוטים וקצרים. (יחסית למתחרים)
מצד ימין אפשר לראות את כל האפליקציות שלכם (לחיצה עליהם תוביל לעריכה)
לאחר שלחצתם על Set Up New App תראו את המסך הבא:
תנו שם לאפליקצייה שלכם (בשביל הדוגמא קראתי לאפליקצייה test application)
סמנו את Agree (אם אתם מסכימים לתנאים)
לחצו על Create App
לאחר מכן תקבלו מסך בדיקת captcha
נסו לכתוב את הטקסט שמופיע בתמונה (לי בדרך כלל לוקח כמה נסיונות עד שאני מליח לנחש נכון)
לאחר שהצלחתם תגיעו למסך הגדרות של האפליקצייה.
אתם יכולים לערוך הגדרות שונות בטאבים השונים (חשוב לציין שבעזרת אפליקציות של פייסבוק אפשר לעשות עוד הרבה דברים ולא רק לוגין לאפליקצייה)
מה שחשוב מבחינתנו כרגע הוא הטאב השני (Web Site)
אתם צריכים להגדיר את Site Url שיפנה לאתר שלכם (אתם לא חייבים להגדיר את Site Domain אלא אם כן אתם רוצים שיכולו לעשות לוגין גם מ - Sub Domain)
אי אפשר להגדיר localhost וזה חייב להיות דומיין אמיתי.
העתיקו לצד את הערך של Application Id ולחצו על Save Changes.
כעת סיימנו את ההגדרות בפייסבוק ונחזור לאפליקצייה שלנו.
ניתן לבצע את התהליך בצד הלקוח או בצד השרת, אני אדגים את העבודה בצד הלקוח.
הפעילו את הסקריפט הבא על לחצן כלשהו בדף הלוגין שלכם.
var appID = '1124445877994';
var scope = 'offline_access';
var redirectUrl = 'http://myDomain.com/myApp/loginpage.aspx';
window.location = 'https://www.facebook.com/dialog/oauth?client_id=' + appID +
'&scope=' + scope +
'&redirect_uri=' + redirectUrl +
'&response_type=token';
המאפיין appID הגדירו אותו לערך שקבלתם מפייסבוק.
המאפיין scope מגדיר אילו הרשאות אנחנו רוצים (כאן אפשר להגדיר שרוצים את המייל, רשימת החברים ועוד) כברירת מחדל ה - token שנקבל יחזיק מעמד ליום אחד ולאחר מכן נצטרך שוב לקבל אישור (יכול להיות שה - token ישתנה), היות שאנחנו רוצים לקבל token לתמיד נגדיר את הערך של scope ל - offline_access.
המאפיין redirectUrl נשלח לו להיכן נרצה שפייסבוק תחזיר את המשתמש אחרי ביצוע הלוגין אצלם. (הדומיין חייב להיות אותו דומיין שהגדרתם במאפיין Site Url בהגדרת האפליקצייה בפייסבוק)
כמעט סיימנו.
כעת המשתמש ילחץ על הלינק שמפעיל את הסקריפט והוא יגיע למסך הבא:
במידה והמשתמש יאשר את הבקשה הוא יחזור למסך שלכם (מה שהגדרתם כ - redirectUrl) כך:
מה שאתם צריכים לעשות זה להוציא את ה - token מתוך ה - hash ולבצע איתו לוגין באפליקצייה.
דרך אחת לעשות זאת זה קוד כזה:
$(document).ready(function () {
if (window.location.hash.indexOf('access_token') > -1) {
PageMethods.LoginAction(window.location.hash, function (res) {
window.location = res;
});
}
});
ובצד שרת ניתן לכתוב משהו כזה:
[WebMethod]
public static string LoginAction(string token)
{
int statr = token.IndexOf("access_token=") + 13;
int length = token.IndexOf("&expires_in=") - 14;
token = token.Substring(statr, length);
if (DAL.UserExsit(token))
{
FormsAuthentication.SetAuthCookie(token, false);
return "default.aspx"
}
else
{
DAL.CreateUser(token);
return "firstTime.aspx";
}
}
כמובן שזה רק אופצייה, מכיוון שלאחר שקבלתם את ה - token תוכלו לעשות איתו מה שאתם רוצים.
בפוסט הבא בנושא, נדבר כיצד אפשר לעשות לוגין בעזרת Windows Live Id.