הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 30-07-11, 10:19   # 1
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

Exclamation הרשמות לאתר באמצעות facebook connect - בעיה רצינית

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

הבעיה היא כזו: אני מבצע חיבור לפייסבוק בהצלחה, כלומר יש לי קוד עובד של משתמש שלוחץ על כפתור LOGIN מאשר את האפליקציה,והאתר מתחבר לו במצב של משתמש רשום - אך מידי פעם החיבור לא מצליח והדף פשוט ממשיך להתרענן בלי סוף ...

מה מוביל לבעיה? אז זהו שאני לא מצליח לשחזר את מה מוביל למקרה. כי אין כל כך חוקיות.

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

קוד:
FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
                FB.Event.subscribe('auth.login', function(response) {
                window.location.reload();
2. יכול להיות שהדפדפן טוען את הדף כמה פעמים כיון שהוא מנסה לטעון את העוגיה מהזיכרון ואז הוא נתקל בעוגיה לא מעודכנת ולכן הוא אולי לא מצליח להתחבר.
גם כאן ניסיתי להשתמש ב :
window.location.reload(true)
אך עדין זה שוב קרה...

3. ניסיתי לשנות הגדרות בפייסבוק באפליקציה לפי דברים שקראתי בפורומים בחו"ל - אך גם ללא הועיל.

צורת החיבור שאני משתמש בה לשם הרישום היא הגרף הפתוח של פייסבוק
https://graph.facebook.com/me?access_token=

יכול להיות שאולי היא לא שיטה שהכי טוב להשתמש בה? והיא באמת ידועה כגורמת בעיות כאלה?

חשבתי שהבעיה אולי קשורה לעומס אז העברתי את הקוד של ההתחברות לשרת אחר וזה קורה גם בו כאשר אין כלל עומסים.


אני באמת כבר אובד עצות ולא יודע מה הבעיה או איך לפתור אותה. ואני ממש אשמח לשמוע אם יש עוד מישהו שנתקל בבעיה ופתר אותה...
__________________
- חייך הכל לטובה .
  Reply With Quote
ישן 30-07-11, 12:37   # 2
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 191

link לא מחובר  

אני מעריך שאתה מנסה להשתמש בDEFINE לפי הקוד הבא: <?= FACEBOOK_APP_ID ?>. הבעיה הראשונית היא שאתה לא עושה echo או print.

עכשיו אני לא מבין למה אתה משתמש בערבוב בין JS לPHP. למה שלא תעשה את זה או בPHP או בJS. תגיד במה אתה משתמש ונוכל לעזור לך.
  Reply With Quote
ישן 30-07-11, 12:59   # 3
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

לגבי הבעיה הראשונית זה יעבוד (וזה עובד) - נכון אולי יותר רצוי לרשום echo אבל זו לא הבעיה.

בקשר לערבוב, אני פשוט לא מכיר דרך אחרת לעשות את החיבור הזה לפייסבוק...
__________________
- חייך הכל לטובה .
  Reply With Quote
ישן 30-07-11, 13:35   # 4
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 191

link לא מחובר  

אני הצלחתי לבצע חיבור לפייסבוק עם PHP. אני אנבור טיפה בקוד שעשיתי ואשלוף את העיקר.

עריכה:
אני בכוונה נותן פה קוד די מפורט כי הדוקומנטציה לא מובנת בעליל ואני מעדיף שלא תשבור שיניים ושהקוד הזה יהיה קיים בפורום בשביל עוד אנשים.
אני מעריך שאתה רוצה רק לקבל את המידע של המשתמש מפייסבוק. הקוד הבא מבצע סט של פקודות שבעצם בסופו של דבר $fbme יכיל מידע של המשתמש(me יכיל מידע של תמונות וכו' בהתאם להרשאות שהגדרת שאותם אתה מציב בAUTH_LIST) תעשה עליו print_r ותראה איזה מידע קיים שם; ד"א הוא מציב סשן.

PHP קוד:
<?php

// The facebook.php file is the php-api facebook class, come with two other files that are necessary for getting access token

require_once('facebook.php');

// An array with you app data. you know from where to get it

$facebook_array = array(
  
'appId'  => YOUR_APP_ID,
  
'secret' => YOUR_SECRET_ID,
);

// Create new facebook object.
$facebook = new Facebook($facebook_array);

// If you have access token you will get data, if not array is empty
$user['facebook']  = $facebook->getUser(); 

// If user are not logged in you get an address with the login url
$loginUrl $facebook->getLoginUrl( array('scope' => AUTH_LIST) );


// guess what
if ( $user['facebook'] ) {
    
$fbme $facebook->api('/me');
    
print_r($fbme);
}
else {
    echo 
"<a href='{$loginUrl}'>Connect with facebook</a>";
}
?>
לעוד מידע ומאיפה להשיג את הAPI תיכנס לפה, רוב הקוד מבוסס על המדריך.

שיהיה בהצלחה.

Last edited by link; 30-07-11 at 13:51..
  Reply With Quote
ישן 30-07-11, 15:58   # 5
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

תודה לינק ...
אני עכשיו יושב על לממש את זה - באמצעות ה SDK3 כפי שרשמת ... אני לא בטוח שזה יפתוח את הבעיה אבל שווה ניסיון כיון שזה סוג אחר של מימוש...
בקרוב כאן עידכונים אם זה הצליח...
__________________
- חייך הכל לטובה .
  Reply With Quote
ישן 31-07-11, 08:48   # 6
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

עדכון: המימוש הזה של התחברות לפייסבוק אכן עובד חלק אם כי יש סיבה לדעתי כיון שאני לא משתמש ב JS , מה שגורר שהאפליקציה גם לא עובדת בדיוק כמו מקודם ... ואני אסביר...
כשהשתמשתי ב JS מרגע שהתחברתי לפייסבוק ואישרתי את האפליקציה כל פעם שאני הייתי נכנס לאתר היה זיהוי אוטומטי שמדובר במשתמש רשום ...
עכשיו כל פעם שמשתמש נכנס לאתר וה SESSION פג, כלומר עוברים מספר דקות שאני לא באתר או סגרתי את הדפדפן ואני נכנס מחדש - חייבים לעשות LOGIN אומנם פייסבוק כבר לא יבקש אישור של האפליקציה אבל עדין צריכים ללחוץ על כפתור ה LOGIN - יש לזה פתרון ? או שכך זה גם אצלך?

בכל מקרה זה עדיף על מקרים של רענון אינסופי של הדף. אז תודה.
__________________
- חייך הכל לטובה .
  Reply With Quote
ישן 31-07-11, 20:27   # 7
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 191

link לא מחובר  

פתרתי את זה גם, עוד כמה זמן אשים את המימוש של זה גם.

עריכה: תחליף את
PHP קוד:
 if ( $user['facebook'] ) { 
ב:
PHP קוד:
if ( isset($_COOKIE['facebook']) ) { 
ואחרי ה$loginUrl תציב את הקוד הבא:

PHP קוד:
        if ( $user['facebook'] ) {
            
setcookie('facebook',$facebook->getAccessToken(),time()+84600*2);
            
$_COOKIE['facebook'] = $facebook->getAccessToken();
        } 
בעקרון אחרי שמתבצע חיבור ראשוני אתה מקבל SESSION, בעוגייה את מקבל את הaccessToken שזה מה שנותן לך את האישור לחיבור הממשי לשרת של פייסבוק. נראה לי זה יספיק.

Last edited by link; 31-07-11 at 20:46..
  Reply With Quote
ישן 01-08-11, 10:51   # 8
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

היי לינק, בדקתי את ההצעה שלך זה באמת לא הספיק,
קיבלתי את השגיאה הבאה (אחרי כמובן שסגרתי את הדפדפן והפעלתי מחדש במטרה לראות שזה יעבוד כביכול על הקוקי)
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home//domains//public_html/includes/base_facebook.php on line 970

ונראה לי כיון שזה שסתם יצרת עוגיה ששומרת את ה TOKEN זה לא מספיק...
אצלי למשל שורות אחרי העוגיה אומרות כזה דבר:
קוד:
    if (isset($_COOKIE['facebook'])) { //בדיקה אם המשתמש קיים
        $user_profile = $facebook->api('/me');
		
		$fname = $user_profile['first_name'];
		$lname = $user_profile['last_name'];
		$email = $user_profile['email'];
ומה שקורא אם באותו SESSION לא התחברת מבחינת פייסבוק אין חיבור ולכן אני גם לא יכול לקבל את השם פרטי וכו' זה שהכנו עוגיה עם TOKEN לא משנה דבר כי הקוד מחפש SESSION עם TOKEN כנראה.

מוזר איך זה עובד אצלך?

ושמתי לב למשהו נוסף
...אני גם ממשתי כפתור התנתקות אחרי הבדיקה אם המשתמש מחובר אני מכין את הכפתור באמצעות הקוד הזה (ואח"כ מציג אותו כקישור למשתמש.)
קוד:
$logoutUrl = $facebook->getLogoutUrl();
לאחר לחיצה עליו הוא מתנתק מפייסבוק -
והוא אכן עושה את זה , ואז הוא מחזיר לדף הראשי ושוב אני מקבל
Fatal error: Uncaught OAuthException: Error validating access token: The session is invalid because the user logged out. thrown in /home//domains//public_html/includes/base_facebook.php on line 970

גם כאן כי הדפדפן לא מצא את הSESSION כנראה. (האתר עדין לא התעדכן או משהו...) ברענון של אותו דף עם השגיאה האתר כבר עולה רגיל ואני אכן כבר לא מחובר.... אבל איך אפשר להתגבר על כך שבפעם הראשונה שאני לוחץ על ההתנתקות זה לא ירשום את השגיאה.
__________________
- חייך הכל לטובה .

Last edited by gillllll; 01-08-11 at 12:05..
  Reply With Quote
ישן 05-08-11, 10:14   # 9
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

אם כבר בעיות אז כדאי שאני ארכז כאן עוד בעיה שזיהיתי(הבעיות הקודמות שמופיעות מעל הודעה זו גם לא נפתרו) ואני לא מצליח לפתור גם את זו אולי הקוד גם ישמש מישהו ב PHP בעתיד בפורום...
להלן הבעיה הנוספת:
למי שלא יודע בהגדרות כאשר פותחים אפליקציה חדשה לפייסבוק בהגדרות מתקדמות צריך להגדיר Deauthorize Callback ,לקישור שמכניסים שם פייסבוק פונה במידה והמשתמש הסיר את האפליקציה.
לשם מימוש הסיפור הזה קראתי קצת כאן: http://developers.facebook.com/docs/authentication/

וקצת כאן...
http://developers.facebook.com/docs/...igned_request/

והמימוש יצא כאמור כזה עבור DELUSER.php שהכנסתי בתור קישור מלא ל Deauthorize Callback URL :

*זה עיקר הקוד בדף יש עוד INCLUDE לקובץ קישור לדטה בייס לצורך העניין.
קוד:
include('includes/facebook.php');


  $signed_request=$facebook->getSignedRequest();
  $user=$facebook->parseSignedRequest($signed_request);
  $userid = $user['user_id'];
  
	$result = mysql_query("delete from users where fbid=$userid");
	
	if (!$result) {
    die('Invalid query: ' . mysql_error());
	}
כאמור זה לא רוצה לעבוד כלומר למחוק את המשתמש מהדטה בייס אם הוא מסיר את האפליקציה.
השימוש בפונקציות הן אלו שמופיעות ב facebook_base.php שמגיע עם חבילה SDK PHP של פייסבוק.
__________________
- חייך הכל לטובה .

Last edited by gillllll; 05-08-11 at 10:27..
  Reply With Quote
ישן 05-08-11, 14:57   # 10
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

עדכון: מתוך 3 הבעיות שהצגתי מצאתי פתרון לבעיות ה LOGOUT... (עדין נשארו 2 בעיות פתוחות.)
את ההבנה איפה קבור הכלב לקחתי מ: http://cacovsky.wordpress.com/2011/0...dk-a-tutorial/
ואת הפתרון הסופי לגבי איך זה ממומש ב SDK3 של פייסבוק - מהבלוג של פייסבוק שם הם עדכנו את השיטה בה מאפסים את הSESSION
http://developers.facebook.com/blog/post/503

הקוד אמור להראות כך סביב הקריאה ל API/'me' כל השאר אותו דבר שימו לב להשתמש במשתנים שאתם נתתם וזה הכל זה פותר את הודעת השגיאה אחרי התנתקות.
קוד:
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
__________________
- חייך הכל לטובה .
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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