2011-08-31 19 views
8

मैं एक कोड लिखने की कोशिश कर रहा हूं जो जांचता है कि उपयोगकर्ता लॉग इन है या नहीं, और पाया कि एफबीजेएस एपीआई में एक अंतर्निहित विधि है, जिसे getLoginStatus()FB.getLoginStatus() काम नहीं कर रहा है

कहा जाता है

मैंने इसे एचटीएमएल, के अंदर लागू किया है, लेकिन कुछ के लिए, getLoginStatus() के अंदर चेतावनी() को निकाल दिया नहीं गया है।

मैंने init() पर channelUrl जोड़ने का भी प्रयास किया है, लेकिन यह अभी भी वही करता है।

नीचे दिया गया कोड है जो मैंने लिखा है।

क्या कोई मुझे इसके साथ मदद कर सकता है?

अग्रिम धन्यवाद!

<!-- Initialize FB API for use --> 
    <div id="fb-root"></div> 
    <script type="text/javascript"> 
    //var curLoc = window.location; 
    //var chanURL = curLoc.protocol + "//" + curLoc.hostname + ":" + 
    //curLoc.port + "/channel.html" 


     window.fbAsyncInit = function() { 
      FB.init({appId: '####', status: true, cookie: true, xfbml: true});  

      FB.getLoginStatus(function(response) { 
        if (response.session) { 
        // logged in and connected user, someone you know 
        alert('logged in'); 
        } else { 
        // no user session available, someone you dont know 
        alert('not logged in'); 
        } 
      }); 
     }; 
     (function() { 
      var e = document.createElement('script'); 
      e.type = 'text/javascript'; 
      e.src = document.location.protocol + 
       '//connect.facebook.net/en_US/all.js'; 
      e.async = true; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 
    </script> 

उत्तर

1

उन्होंने इसे बदल दिया। प्रतिक्रिया पर console.log चलाएँ, और आप के रूप में तो परीक्षण की आवश्यकता देखें:

if (response.status=='connected')) {...} 

संपादित करें:

<?php 
// using Facebook PHP SDK (v.3.1.1) 
$facebook = new Facebook(array(
    'appId' => APP_ID 
    'secret' => SECRET 
)); 

// See if there is a user from a cookie 
$user = $facebook->getUser(); 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
    $user = null; 
} 
} 
?> 

और शरीर में js:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId : '<?php echo $facebook->getAppId(); ?>', 
     status : true, 
     cookie : true, 
     oauth: true, 
     channelUrl : MY_CHANNEL_URL, 
     xfbml : true 
    }); 

    FB.getLoginStatus(function(response) { 
     console.log(response); 
     if ((response.status)&&(response.status=='connected')) { 
      loadStreamInto ($("#FBmessages")); 
     } else { 

     } 
    }); 
}; 
</script> 
यहाँ अपना लॉगिन के सबसे अधिक है
+0

उत्तर बॉबी के लिए धन्यवाद। मैंने प्रतिक्रिया के लिए अगर कथन बदल दिया है। स्टेटस, लेकिन अभी भी कोई प्रतिक्रिया नहीं है, मैंने कंसोल.लॉग भी इस्तेमाल किया है, लेकिन यह फ़ायरबग पर किसी भी आउटपुट का उत्पादन नहीं करता है। मैंने outh को सक्षम करके authResponse का उपयोग करने का भी प्रयास किया है, लेकिन वही। क्या इससे कोई फर्क पड़ता है कि मैं इसका परीक्षण करने के लिए लोकलहोस्ट का उपयोग करता हूं? – darangho

+1

एफबी शिकायत करेगा जब आप अपना रास्ता गलत होने पर लॉगिन को पुनः निर्देशित करने का प्रयास करेंगे। मुझे लगता है कि आप उसे नोटिस करेंगे। मैं स्थानीयहोस्ट का हर समय उपयोग करता हूं, बस अपने डेवलपर्स पेज पर अपनी ऐप साइट यूआरएल के रूप में दर्ज करें। आरई console.log। यदि आपको कुछ भी नहीं मिलता है, तो देखें कि क्या आपका fbAsyncInit बिल्कुल कॉल किया जा रहा है, वहां से डीबग करें। –

0

response.status == 'जुड़े' केवल तब होता है यदि आप OAuth डाल: fb.init में सच

कोड मेरे लिए ठीक लग रहा है के रूप में नहीं है काम करना चाहिए सुनिश्चित करें कि यह

+0

टिप्पणी उपयोगकर्ता911086 के लिए धन्यवाद। मुझे यह भी नहीं पता कि यह क्यों काम नहीं करता है। – darangho

1

क्यों काम करता है मुझे लगता है कि आपने लिंक किए गए कोड में #### के साथ आपको वास्तविक ऐप आईडी बदल दिया है। यदि नहीं, तो यह आपकी समस्या है।

मान लीजिए कि आपने वास्तव में अपना ऐपआईड यहां रखा है, यह इस तथ्य से संबंधित हो सकता है कि आप स्थानीयहोस्ट पर परीक्षण कर रहे हैं। मेरा मानना ​​है कि अगर जावास्क्रिप्ट से काम किया जा रहा है, तो ऐप से जुड़े यूआरएल से मेल नहीं खाएगा, जो ऐप आईडी

8

मेरे पास यह दूसरा दिन था और समस्या यह थी कि मैं नहीं था फेसबुक में लॉग इन किया गया और मेरी ऐप सैंडबॉक्स मोड में थी। मायाबे यह वही है, लांगशॉट लेकिन वैसे भी इसका सुझाव देना चाहता था।

नोट: तुलनात्मक संयोजन जो काम नहीं करेंगे, वे एक टेस्ट उपयोगकर्ता के रूप में फेसबुक में लॉग इन किए जा रहे हैं जिनके पास गैर-परीक्षण/गैर-व्यवस्थापक उपयोगकर्ता के रूप में फेसबुक में प्रश्न या लॉग इन होने के कारण कोई पहुंच नहीं है सैंडबॉक्स मोड में ऐप।

2

मुझे एक ही समस्या थी। मैं एफबी ऐप सेटिंग्स में 'सैंडबॉक्स मोड' के कारण हुआ था। सक्षम होने पर, यह getLoginStatus() प्रतिक्रिया को आग नहीं देगा। शायद क्योंकि यह अज्ञात है अगर आप वास्तव में एक पंजीकृत डेवलपर हैं जब लॉग इन नहीं किया जाता है।

4

बीटीडब्ल्यू। उन्होंने इसे फिर से बदल दिया। अब यह है:

response.authResponse

और नहीं response.session अब और।

0

मैं यह नहीं कह रहा कि यह आपके लिए काम करेगा, लेकिन मुझे अपने तैनात ऐप के साथ एक ही समस्या थी।यह मेरे लोकहोस्ट पर ठीक काम करता था लेकिन जब हेरोोकू में तैनात नहीं किया गया था। मुझे एहसास हुआ कि फेसबुक ऐप सेटिंग्स में मेरे पास यूआरएल स्थानीय लोगों के रूप में सेट थे - जब मैंने इसे अपने तैनात ऐप यूआरएल में बदल दिया तो इसे ठीक कर दिया।

संबंधित मुद्दे