הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   התחברות בעזרת פייסבוק (https://hosts.co.il/forums/showthread.php?t=87178)

dor77 01-01-11 16:47

התחברות בעזרת פייסבוק
 
שלום.
אני מנסה ליצור חיבור לאתר בעזרת פייסבוק.
יצרתי את האפליקציה..יש לי את הid של האפליקציה, את ה key..הכל..
אני לא מצליח להפעיל את ההתחברות.
הקוד לדוגמא שהם נותנים לי לא עושה כלום.
אני צריך לשים איזו ספרייה בשרת שלי או משהו?
אני אשמח לדעת אם יש פה מישהו שיודע איך לעשות את זה ולעזור לי..אני ממש מתייאש.
תודה רבה.

iOrel 01-01-11 23:32

אתה צריך לכלול את הקובץ בשרת שלך.
ליצור משתנה שיש בו מערך של הנתונים הסודיים של הAPP
ואז להתחיל לעבוד עם היוזר :)

dor77 02-01-11 01:26

ציטוט:

נכתב במקור על ידי iOrel (פרסם 791594)
אתה צריך לכלול את הקובץ בשרת שלך.
ליצור משתנה שיש בו מערך של הנתונים הסודיים של הAPP
ואז להתחיל לעבוד עם היוזר :)

יש מצב להסבר מפורט יותר?
איזה קובץ לכלול בשרת?
אם יש לך כמה דקות לא איכפת לי להתקשר..אני חייב עזרה עם זה.
תודה!

BlueNosE 02-01-11 01:30

תוריד את הקובץ שהם מספקים באתר. הוא מכיל API לשימוש עם Facebook, ואותו אתה טוען לעמוד ועובד עם הפונקציות שלו.

dor77 02-01-11 11:49

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 791611)
תוריד את הקובץ שהם מספקים באתר. הוא מכיל API לשימוש עם Facebook, ואותו אתה טוען לעמוד ועובד עם הפונקציות שלו.

איפה הקובץ הזה? לא מצאתי אותו.
מישהו יכול לנסות להסביר לי טוב יותר?
תודה.

BlueNosE 03-01-11 13:54

http://developers.facebook.com/docs/guides/web

לדעתי עם הFacebook Graph זה כבר יותר פשוט ולא צריך בכלל API, תבדוק את מה ששלחתי לך

dor77 03-01-11 16:57

הצלחתי..זה עובד אבל..כשאני נותן את הסכמתי לאפילקציה זה מראה לי:
Your user ID is 14*****984
אני רוצה לקבל מפייסבוק את ה id שלו ואת השם משתמש שלו..איך אני עושה את זה?

זה הקוד:
PHP קוד:

<?php

define
('FACEBOOK_APP_ID''178*********56686');
define('FACEBOOK_SECRET''1dc3************39543031');

function 
get_facebook_cookie($app_id$application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' $app_id], '\\"'), $args);
ksort($args);
$payload '';
foreach (
$args as $key => $value) {
if (
$key != 'sig') {
$payload .= $key '=' $value;
}
}
if (
md5($payload $application_secret) != $args['sig']) {
return 
null;
}
return 
$args;
}

$cookie get_facebook_cookie(FACEBOOK_APP_IDFACEBOOK_SECRET);

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:fb="http://www.facebook.com/2008/fbml">
<body>
<?php if ($cookie) { ?>
Your user ID is <?= $cookie['uid'?>
<?php 
} else { ?>
<fb:login-button></fb:login-button>
<?php ?>

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
</script>
</body>
</html>

תודה

BlueNosE 03-01-11 17:10

דיברנו על הGraph, תפנה ל graph.facebook.com/me ותראה מה מתקבל. בדרך תלמד על JSON אם אתה לא יודע מה זה.

dor77 03-01-11 17:26

לא הבנתי.
זה מה שאני מקבל שאני נכנס:
{
"error": {
"type": "OAuthException",
"message": "An active access token must be used to query information about the current user."
}
}

BlueNosE 03-01-11 19:25

עכשיו זה קצת מוציא את המוטיבציה לעזור לך, באמת הבנת הנקרא.. שלחתי לך מספיק חומר בשביל להתגבר על הבעיה הזאת, תעבור על הקישורים ואם אתה באמת לא מצליח להבין תחזור לפה.

dor77 03-01-11 21:13

תראה אני מבין אותך אבל באמת באמת שאני לא מבין.
ההתחברות עובדת..הכל עובד אני פשוט רוצה שבמקום שהוא יכתוב "Your user ID is 14*****984" הוא יכתוב לי גם את שם המשתמש..כדי שאוכל לרשום למשתמש "היי *משתמש* "
לא מבין איך הלינקים שם קשורים לזה..
באמת.
תודה על העזרה, מעריך את זה.

BlueNosE 03-01-11 23:12

אני אסביר את הקונספט.

הפייסבוק Graph מאפשר לך לשלוח לשרת של פייסבוק מעין שאילתא בURL ולקבל כתשובה קוד JSON שמכיל נתונים על המשתמש.
לדוגמא, http://graph.facebook.com/UID (תחליף את UID בכתובת שאתה רוצה) יחזיר לך כמה נתונים, שבניהם אאל"ט גם שם המשתמש.

אם ברצונך לגשת למידע יותר אישי על המשתמש, שמצריך אישור גישה, אתה חייב להעביר לשאילתא access token - מעין אישור שאתה באמת פונה לגיטימי ולא קוד זדוני.
את הaccess token אתה מקבל כמובן מהסשן של הפייסבוק באתר שלך.

בקיצור, אתה צריך להבין את הנושא הזה לעומק ובשביל זה רצוי שתקרא מה ששלחתי לך. זה לא פשוט להבין אותו לגמרי, אבל זה גם לא חוכמה לבוא לפה ולשאול כל שניה - ככה בחיים לא באמת תבין.

dor77 03-01-11 23:34

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 791816)
אני אסביר את הקונספט.

הפייסבוק Graph מאפשר לך לשלוח לשרת של פייסבוק מעין שאילתא בURL ולקבל כתשובה קוד JSON שמכיל נתונים על המשתמש.
לדוגמא, http://graph.facebook.com/UID (תחליף את UID בכתובת שאתה רוצה) יחזיר לך כמה נתונים, שבניהם אאל"ט גם שם המשתמש.

אם ברצונך לגשת למידע יותר אישי על המשתמש, שמצריך אישור גישה, אתה חייב להעביר לשאילתא access token - מעין אישור שאתה באמת פונה לגיטימי ולא קוד זדוני.
את הaccess token אתה מקבל כמובן מהסשן של הפייסבוק באתר שלך.

בקיצור, אתה צריך להבין את הנושא הזה לעומק ובשביל זה רצוי שתקרא מה ששלחתי לך. זה לא פשוט להבין אותו לגמרי, אבל זה גם לא חוכמה לבוא לפה ולשאול כל שניה - ככה בחיים לא באמת תבין.

ואי, ממש יפה..זה באמת נותן לי המון מידע..מידע שמספק אותי אישית רק דבר אחד אני לא מבין.
המידע כתוב לי בדף..נגיד ככה:
{
"id": "1***3984",
"name": "Dor Ben Zaken",
"first_name": "Dor",
"last_name": "Ben Zaken",
"link": "http://www.facebook.com/people/Dor-Ben-Zaken/***84",
"gender": "male",
"locale": "he_IL"
}

ואני רוצה לשים את הערך "first_name" בתוך עוגיה..
זה משהו שאני חייב לעשות..העניין שהמידע רק מוצג, אני לא מקבל אותו..
חיפשתי גם בקישורים שלך..לא מצאתי פיתרון.
אז אני כן רואה את המידע, אבל איך אני שומר אותו?

תודה רבה לך, כן ירבו אנשים כמוך.
באמת שאנ לא בא וישר שואל..באמת שלא, פשוט הפייסבוק האלה לא מובנים..

BlueNosE 03-01-11 23:44

כמו שאמרתי כמה הודעות קודם, חשוב שתלמד JSON לצורך זה.
www.php.net/json יספיק לצורך העניין.

dor77 03-01-11 23:59

עד שענית כאן אני קראתי על זה קצת..
מצאתי את הקוד הבא:

PHP קוד:

$json '{"foo-bar": 12345}';

$obj json_decode($json);
print 
$obj->{'foo-bar'}; 

פה מתבצע מה שאני צריך אבל ישנה בעיה אחת..אני לא מקבל את הjson..אני מקבל רק את הפלט.
איך אני יכול לעשות את הjson_decode אם אין לי את ה json?
מקווה שאתה מבין אותי.
פשוט אני מקבל את הפלט ואני רוצה לשמור..
אני אמשיך לקרוא ולחפש..העניין שזה נראה מעמיק מדי, אני לא באמת צריך את זה.
אם למישהו כאן יש פיתרון אני אשמח, אם לא אז אני אנסה להתסדר..אם אני לא אצליח אז נוותר על זה וזהו.

תודה רבה לך!

BlueNosE 04-01-11 00:08

לא הבנתי מה הבעיה. הקוד שמוחזר לך, שרשמת בהודעה- קח אותו עם file_get_contents או עם cURL ושמור במשתנה.
על המשתנה תבצע json_decode וסיימת.

dor77 04-01-11 00:19

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 791821)
לא הבנתי מה הבעיה. הקוד שמוחזר לך, שרשמת בהודעה- קח אותו עם file_get_contents או עם cURL ושמור במשתנה.
על המשתנה תבצע json_decode וסיימת.

זה בדיוק מה שבאתי לעשות! file_get_contect רק משהו אחד קטן.
אני עושה file_get_contact לדף הזה למשל:
http://graph.facebook.com/100896011

ואז אני מקבל הקוד של זה:
{
"id": "100001626896011",
"name": "LapKap Page",
"first_name": "LapKap",
"last_name": "Page",
"link": "http://www.facebook.com/people/LapKap-Page/100001626896011",
"gender": "male",
"locale": "en_US"
}

אם אני אשמור את זה במשתנה אני בעתם אעשה json_decode על כל הקוד..
השאלה אם חייב לעשות על כל הקוד.
בכל אופן, אני אנסה עכשיו..מקווה שיעבוד.
תודה!

dor77 04-01-11 00:26

ניסיתי..משהו לא בסדר..
הקוד:

PHP קוד:


<?php


$page 
file_get_contents('http://graph.facebook.com/100001626896011');
$json '$page';

$obj json_decode($json);
print 
$obj->{'name'}; 

?>

מה..מה...חח ):

BlueNosE 04-01-11 12:40

מה
PHP קוד:

$json '$page'

זה לעזאזל

dor77 04-01-11 14:08

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 791841)
מה
PHP קוד:

$json '$page'

זה לעזאזל

זה מה שאמרת לעשות לא?
לקחת את הדף בעזרת file_get_contact, להכניס למשתנה ולעשות עליו json..מה הבעיה?
למה זה לא פועל?
אשמח לעזרה, תודה.

BlueNosE 04-01-11 15:00

זה מפריע לי, שאני מרגיש כאילו השאלה הזאת מראה שאתה בעצם לא יודע PHP ממש.
אני לא אוהב לתת פתרונות על מגש של כסף. בכל מקרה, תוותר על השורה הזאת ותשנה את $obj = json_decode($json); ל-
PHP קוד:

$obj json_decode($page); 

.

לרשום מה שרשמת מעיד על זה שאתה כנראה לא ממש יודע מה אתה עושה. אבל מה אני אגיד לך, שיהיה בהצלחה.

dor77 04-01-11 15:41

ואי, צודק..זה הטעה אותי קצת.
תגיד זה חוקי אבל מה שאני עושה?
כאילו המשתמש נותן גישה, אני מקבל ממנו id, לאחר מכן בעזרת json מוצי את השם משתמש שלו ואז עושה עוגייה על שם המשתמש שלו + id.
סיסמא אין לי..
זה חוקי?
פשוט אני יודע שכל האתרים לא עושים ככה.

תודה רבה לך על הכל, תודה.

BlueNosE 04-01-11 17:31

למה שלא יהיה חוקי? אולי זה בעייתי מבחינת אבטחה. לא יודע לא יצא לי לחקור את התחום. רק תחשוב על זה שאם מישהו רוצה הוא יכול לזייף עוגיה עם שם משתמש וID תואמים בלי בעיה. תצטרך לאמת את הID מול הפייסבוק בכל כניסה לאתר בכל מקרה.

dor77 05-01-11 08:02

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 791871)
למה שלא יהיה חוקי? אולי זה בעייתי מבחינת אבטחה. לא יודע לא יצא לי לחקור את התחום. רק תחשוב על זה שאם מישהו רוצה הוא יכול לזייף עוגיה עם שם משתמש וID תואמים בלי בעיה. תצטרך לאמת את הID מול הפייסבוק בכל כניסה לאתר בכל מקרה.

כן..מה שקיבלתי מפייסבוק, אני אעשה לו בדיקה עם ה id שיש העוגייה + עם השם משתמש שיש בעוגייה.
אני מקווה שאני אסתדר.
אני מאוד מודה לך על כל העזרה, תודה על הסבלנות!


כל הזמנים הם GMT +2. הזמן כעת הוא 06:38.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ