DCSIMG
Authentication providers - part 1 - Facebook - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Authentication providers - part 1 - Facebook

 

כמו שהבטחתי אני אראה כיצד אפשר לעשות תהליך לוגין לאתר שלנו על ידי חברה אחרת, ואתחיל עם פייסבוק, ואדגיש אנחנו נתמקד כרגע במצב שבו אנחנו צריכים מזהה ייחודי עבור משתמש ולא מעניין אותנו מידע נוסף עליו (אע"פ שאפשר לקבל מהם מידע נוסף אם המשתמש מסכים לכך)
 
 
מידע נוסף על התהליך של לוגין עם פייסבוק תוכלו למצוא כאן, וכאן
לחצן לוגין של פייסבוק כאן.
עטיפה של פקדי פייסבוק ב - net תוכלו למצוא כאן.
 
 
השלבים לבצע לוגין עם פייסבוק הם פשוטים וקצרים. (יחסית למתחרים)
 
 
ראשית אנחו צריכים לייצר אפלייקציה בפייסבוק, הכנסו ל - http://www.facebook.com/developers/ ולחצו על הלחצן (למעלה בצד ימין) Set Up New App
 
set up new app
 
מצד ימין אפשר לראות את כל האפליקציות שלכם (לחיצה עליהם תוביל לעריכה)
 
לאחר שלחצתם על Set Up New App תראו את המסך הבא:
 
new application
 
 
תנו שם לאפליקצייה שלכם (בשביל הדוגמא קראתי לאפליקצייה test application) 
סמנו את Agree (אם אתם מסכימים לתנאים)
לחצו על Create App
 
לאחר מכן תקבלו מסך בדיקת captcha
 
Security Check
 
 
נסו לכתוב את הטקסט שמופיע בתמונה (לי בדרך כלל לוקח כמה נסיונות עד שאני מליח לנחש נכון)
 
לאחר שהצלחתם תגיעו למסך הגדרות של האפליקצייה.
 
facebook application
 
 
אתם יכולים לערוך הגדרות שונות בטאבים השונים (חשוב לציין שבעזרת אפליקציות של פייסבוק אפשר לעשות עוד הרבה דברים ולא רק לוגין לאפליקצייה)
 
מה שחשוב מבחינתנו כרגע הוא הטאב השני (Web Site)
 
web site tab
 
 
אתם צריכים להגדיר את 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 בהגדרת האפליקצייה בפייסבוק)
 
 
כמעט סיימנו.
 
כעת המשתמש ילחץ על הלינק שמפעיל את הסקריפט והוא יגיע למסך הבא:
 
access facebook
 
במידה והמשתמש יאשר את הבקשה הוא יחזור למסך שלכם (מה שהגדרתם כ - 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.

תוכן התגובה

שמואל כתב/ה:

היה לי פעם טריק לעשות זיהוי באמצעות GMAIL, לא רשמי שלהם.

אבל הוא נחסם איכשהו

זה עבד באמצעות גוגל טוק [היית חייב לאשר אותי בגוגל טוק של החשבון שלך] והייתי שם ב IFRAME חלון להרשם לאפליקציה מסויימת של גוגל שכניסה אליה הייתה מאפשרת לי לראות את הIP של מי שמחובר איתי בגוגל טוק

והייתי מצליב IP מול פרטי יוזר

כנראה שעלו על זה, וזה הופסק

זה לא הכי בטוח למקרה של ריבוי נרשמים מאותו IP...

אבל זה התאים לדבר שהייתי צריך

# May 19, 2011 1:15 PM

אסף כתב/ה:

מה עם part 2 ?

# June 15, 2011 6:13 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 6 and type the answer here:


Enter the numbers above: