8

के साथ लॉगिन स्थिति की जांच कर रहा हूं, जब मैं लॉगिन बटन पर क्लिक करता हूं तो लॉगिन पॉपअप लाने के लिए मैं फेसबुक के जावास्क्रिप्ट एसडीके का उपयोग कर रहा हूं।फेसबुक एपीआई: जावास्क्रिप्ट एसडीके का उपयोग करके लॉगिन करें, फिर PHP

कोड है, जैसा कि फेसबुक doucmentation में प्रदान करता है:

$(".loginButton").click(function(){ 
FB.login(function(response) { 
    FB.api('/me', function(response) { 
     console.log(response.id); 
     //User ID shows up so I can see that the user has accepted the app. 
    }); 
}); 

मैं भी जांच करने के लिए है कि उपयोगकर्ता वास्तव में में लॉग इन और आवेदन स्वीकार कर लिया है FB.getLoginStatus() उपयोग कर सकते हैं।

हालांकि, अब मैं PHP के साथ एक फ़ंक्शन निष्पादित करना चाहता हूं। जहां तक ​​मैं समझता हूं, PHP में $user है जिसे सफल लॉगिन के बाद उपयोगकर्ता आईडी असाइन किया गया है।

समस्या जेएस लॉगिन $user के बाद भी है 0 है। मैं अटक कर रहा हूँ और मैं समझ नहीं क्यों यह $user

यहाँ करने के लिए सही उपयोगकर्ता ID असाइन नहीं करेगा मेरी जे एस है:

<script type="text/javascript"> 

     window.fbAsyncInit = function() { 
      FB.init({ 
       appId : '<?php echo $AppId; ?>', 
       status : true, // check login status 
       cookie : true, // enable cookies to allow the server to access the session 
       xfbml : true, 
       channelUrl : '<?php echo $ServerPath; ?>channel.php' // custom channel 
      }); 

    }; 


    //Get Login Status 
    function amILoggedIn(){ 
     var toreturn = ""; 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
       window.userId = response.authResponse.userID; 
      toreturn = "GetLoginStatus: logged in" + " " + "<?php echo $user; ?>"; 
      } else { 
      toreturn = "GetLoginStatus: Logged Out"; 
      } 
      console.log(toreturn); 
     }); 


    }; 


    // Load the SDK asynchronously 
    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 

      var obj = { 
        method: 'feed', 
        link: 'http://www.google.com' 
       }; 


    $(".loginPopupButton").click(function(){ 
     FB.login(function(response) { 
      FB.api('/me', function(response) { //user-specific stuff 
       console.log(response.id); 
      }); 
     }); 

    }); 

    </script> 

और यहाँ पीएचपी है:

<?php 
    include_once('fbapi/facebook.php'); 
    include_once('fbapi/Authenticated_User.php'); 
    include_once('config.php'); 


    // Create our Application instance. 
    $facebook = new Facebook(array(
        'appId' => $AppId, 
        'secret' => $AppSecret 
       )); 
    //Facebook Authentication part 
    $user = $facebook->getUser(); 


    $perms = "manage_pages"; 
    if(isset($_GET['backlink'])) 
     $redirectUrl = urldecode($_GET['backlink']); 
    else 
     $redirectUrl = $fullserverpath; 

    $cancelUrl = $ServerPath."index.php?page=loginWFb"; 

    //AA - where to go to get FB popup.  
    $loginUrl = $facebook->getLoginUrl(
      array(
       'scope' => $perms, 
       'redirect_uri' => $redirectUrl, 
       'cancel_uri' => $cancelUrl 
      ) 
    ); 



    //AA- Defining that a powerUSER is someone who's logged in 
    if(isset($user)){ 
     $_SESSION['loggedIn'] = $user; 

    } 

    ?> 
+0

आपको वें पास करने की आवश्यकता है ई जेएस से PHP तक पहुंच टोकन (और PHP लाइब्रेरी में इसका उपयोग करें)। –

उत्तर

4

जेएस एसडीके के साथ लॉगिन करें PHP एसडीके के साथ लॉगिन करते समय फेसबुक कुकीज़ में लॉगिन डेटा स्टोर करता है, PHP सत्र में डेटा संग्रहीत करता है। तो यदि आप जेएस एसडीके के साथ लॉग इन करते हैं, तो PHP एसडीके इसके बारे में अवगत नहीं होगा।

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     // Full redirect or ajax request according to your needs 
     window.location.href = 'login.php?signed_request='+response.authResponse.signedRequest; 
    } 
}); 

फिर $facebook->getUser() आप अपने PHP में उपयोगकर्ता आईडी दे देंगे:

जे एस एसडीके डेटा का उपयोग कर, आप क्वेरी पैरामीटर में हस्ताक्षर किए गए अनुरोध के साथ अपने PHP पेज कॉल करने की आवश्यकता पीएचपी SDK के साथ प्रवेश करने के लिए कोड।

+2

_ "तो यदि आप जेएस एसडीके के साथ लॉग इन करते हैं, तो PHP एसडीके इसके बारे में अवगत नहीं होगा।" _ - आधिकारिक दस्तावेज़ [अलग होना चाहते हैं] (https://developers.facebook.com/docs/php/gettingstarted/ # एकीकरण) ... – CBroe

+0

आप सही हैं, मुझे यह नहीं पता था। मैं तब एक सरल जवाब का प्रस्ताव दूंगा। – Ale

0

जब PHP में फेसबुक वस्तु आरंभ, सेट करने का प्रयास sharedSession पैरामीटर true रहे हैं:

$facebook = new Facebook(array(
    'appId'   => $AppId, 
    'secret'  => $AppSecret, 
    'sharedSession' => true 
)); 
0

तुम यहाँ से

http://liferaypower.blogspot.com/2013/10/index.html

नमूना कोड

FB.init({ 
    appId: '490986011016528', // App ID 

    channelUrl: 'http://localhost:8000/', // Channel File 

    status: true, // check login status 

    cookie: true, // enable cookies to allow the server to access session 

    xfbml: true // parse XFBML 

}); 

FB.Event.subscribe('auth.authResponseChange', function(response) 
{ 

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

     document.getElementById("message").innerHTML += "ConnectedtoFacebook"; 
} 
else if (response.status === 'not_authorized') 
{ 

document.getElementById("message").innerHTML += "<br>Failed to Connect"; 
    //FAILED 

} 

else 
    { 

    document.getElementById("message").innerHTML += "<br>Logged Out"; 
     //UNKNOWN ERROR 

    } 
}); 
काम कर उदाहरण मिल सकते हैं
संबंधित मुद्दे