2014-03-01 73 views
0

我想写一个自定义的授权/取消授权脚本使用Facebook的OAuth凭证我的网站。我可以张贴令牌到我的数据库,但是当我删除令牌和刷新页面,它只是再次张贴的标志,即使我没有点击授权链接。Facebook的访问令牌/登录

我authorize.php:

<div class="authorize_btn" style="float:right; margin-top:-35px; padding-right:10px"> 
<?php 
    $db_conx = mysqli_connect("localhost","root","","test"); 

    if (mysqli_connect_errno()) 
    { 
     echo mysqli_connect_error(); 
     exit(); 
    } 

    $sql = "SELECT fb_token FROM users"; 
    $user = $_SESSION['username']; 
    $query = mysqli_query($db_conx, $sql); 
    $row = mysqli_fetch_array($query); 

    $login = $facebook->getLoginUrl(); 

    $access_token = $facebook->getAccessToken(); 

    $fb_token = $row[0]; 

    if (empty($fb_token)) 
    { 

     $add_user = "<a href='$login'>Add User</a>"; 
     echo $add_user; 

     if ($add_user) 
     { 
      $sql = mysqli_query($db_conx, "UPDATE users SET fb_token='$access_token' where username='$user'"); 
     } 

    } 
    else 
    { 
     echo "<form id='deauth' action='deauth_fb.php' method='post'>";  
     echo "<a href='#' onclick='document.forms[0].submit();'>Deauthorize User</a>"; 
     echo "</form>";           
    } 
?> 
</div> 

我deauth_fb.php:

<?php 
    session_start(); 

    include ('inc/facebook.php'); 
    include ('fbconfig.php'); 

    $db_conx = mysqli_connect("localhost","root","","test"); 

    if (mysqli_connect_errno()) 
    { 
     echo mysqli_connect_errno(); 
     exit(); 
    } 

    $facebook = new Facebook(array(
     'appId'   => APP_ID, 
     'appSecret'  => APP_SECRET, 
    )); 

    $user_session = $_SESSION['username']; 
    $delete_sql = mysqli_query($db_conx, "UPDATE users SET fb_token='' where username='$user_session'"); 


    header('location:home.php'); 
?> 

回答

0

那是因为你只是更新fb_tokenblank未注销用户。

要获取注销URL:

$params = array('next' => 'http://after_logout.lnk'); 
$logout = $facebook->getLogoutUrl($params); 

getLogoutURL()有一个可选的$params阵列包含键和值对:

next→(可选)接着URL向其注销后的用户重定向(应该是绝对URL)。

Reference