2017-01-15 44 views
0

嗨,我是Codeigniter的初學者。 我有4個瀏覽頁面,有Facebook的登錄(1.登錄頁面2.register頁面3.login特殊會員頁面4.register特殊會員頁面)Codeigniter如何包含Facebook的SDK初始?

和所有4個視圖文件我必須初始facebook php sdk這樣

<?php require_once(APPPATH.'libraries/facebook/src/facebook.php'); 
$facebook = new Facebook(array(
    'appId' => '201637766943985', 
    'secret' => '4e70dc1dbfc4787e81bec0d7b57d6a1c', 
)); 


$user = $facebook->getUser(); 

這是非常惱人的,有一天我必須要改變的appid和appsecret,我必須改變它在4個查看文件。

所以我創建新的視圖文件名「fb_init.php」包含代碼

<?php require_once(APPPATH.'libraries/facebook/src/facebook.php'); 
    $facebook = new Facebook(array(
     'appId' => '201637766943985', 
     'secret' => '4e70dc1dbfc4787e81bec0d7b57d6a1c', 
    )); 


    $user = $facebook->getUser(); 

,然後在4個視圖文件,我包括通過寫fb_init.php

$this->load->view('fb_init.php'); 

然而,問題是facebook php sdk的其餘代碼不能參考$user變量。 facebook sdk的其餘代碼在這裏。

if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me?fields=id,email,name,first_name,last_name,picture'); //ต้องมีหลัง /me ไม่งั้นประวัติมาไม่ครบ 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 
    } 

$loginUrl = $facebook->getLoginUrl(array( 
    "redirect_uri"=>"http://www.club55.net/login", 
    "scope"=>"email" 
)); 

我該怎麼辦?

回答

0

試試這個,在你的fb_init.php

$data['user'] = $facebook->getUser(); 

並在您的視圖文件中。

$this->load->view('fb_init.php', $data); 

if ($user) { 
... 
0

你可以用javascript來做它會在我們的網站上打開facbook登錄彈出窗口不會重定向到facebook站點。

,請點擊此 -

<html> 
<body> 
<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '717505658366417', 
     status  : true, 
     cookie  : true, 
     xfbml  : true 
    }); 
    }; 

    function Login() 
    { 

     FB.login(function(response) { 
      if (response.authResponse) 
      { 
       getUserInfo(); 
      } else 
      { 
      console.log('User cancelled login or did not fully authorize.'); 
      } 
     },{scope: 'email,user_photos,user_videos'}); 

    } 

    function getUserInfo() { 
     FB.api('/me', function(response) { 
     var str="<b>Name</b> : "+response.name+"<br>"; 
      str +="<b>Link: </b>"+response.link+"<br>"; 
      str +="<b>Gender:</b> "+response.gender+"<br>"; 
      str +="<b>id: </b>"+response.id+"<br>"; 
      str +="<b>Email:</b> "+response.email+"<br>"; 
      str +="<input type='button' value='Get Photo' onclick='getPhoto();'/>"; 
      str +="<input type='button' value='Logout' onclick='Logout();'/>"; 
      document.getElementById("status").innerHTML=str; 

    }); 
    } 
    function getPhoto() 
    { 
     FB.api('/me/picture?type=normal', function(response) { 

      var str="<br/><b>Pic</b> : <img src='"+response.data.url+"'/>"; 
      document.getElementById("status").innerHTML+=str; 

    }); 

    } 
    function Logout() 
    { 
     FB.logout(function(){document.location.reload();}); 
    } 

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

</script> 
<a href="javscript:void(0);" onclick="Login()">Login</a> 
</body> 
</html> 

它了一個通用的代碼,我們可以在任何語言或以任何技術使用此代碼,希望它會工作。