* 如果有兴趣,请在此问题上查看Foursquare的回答,作为对此帖的评论 *
请帮忙,我还在为此而战:(
我创建了一个删除所有与Foursquare相关的Cookie的按钮。 使用Firebug进行检查,点击时未设置cookie。
同样的编程也会删除插入数据库中的令牌 当用户第一次登录时。在数据库中检查,该行是 删除。
以下是发生的事情:
Cookie未设置并从数据库中删除行
现在,其他用户想要登录。他/她在我的网络应用中点击<a href='".$authorizeUrl."'>Log in</a>
。
Foursquare登录页面显示,但他/她可以填写表格 在,页面使用以前的用户令牌重定向回我的Web应用程序 和信息!
在没有第6点发生的情况下,我可以做一个干净的开始的唯一方法是 手动删除浏览器中的所有Cookie :(
任何想法将不胜感激,我不知道该在哪里关注。 在我正在使用的代码下面,请尝试一下,你会看到第6步是如何发生的。
非常感谢
<?php
ob_start();
require_once('includes/EpiCurl.php');
require_once('includes/EpiSequence.php');
require_once('includes/EpiFoursquare.php');
$logout= $_GET['logout'];
if ($logout == 'true'){ /*I'm deleting all the cookies foursquare related just in case*/
$pastdate = mktime(0,0,0,1,1,1970);
setcookie ("XSESSIONID", "", time() - 18600);
setcookie ("access_token", "", time() - 18600);
setcookie ("ext_id", "", time() - 18600);
setcookie ("LOCATION", "", time() - 18600);
setcookie("access_token", "", $pastdate);
setcookie("XSESSIONID", "", $pastdate);
setcookie("ext_id", "", $pastdate);
setcookie("LOCATION", "", $pastdate);
setcookie("_chartbeat2", "", $pastdate);
setcookie("__utmb", "", $pastdate);
setcookie("__utmc", "", $pastdate);
setcookie("__utma", "", $pastdate);
setcookie("__utmz", "", $pastdate);
$_SESSION['XSESSIONID']=false;
unset($_SESSION['XSESSIONID']);
}
$clientId = "yyyyyyyyy";
$clientSecret = "xxxxx";
$redirectUrl = 'mypage.php';
$fsObjUnAuth = new EpiFoursquare($clientId, $clientSecret);
$thecode = $_GET['code'];
if(!isset($thecode) && !isset($_COOKIE['access_token'])) { //not in yet
$authorizeUrl = $fsObjUnAuth->getAuthorizeUrl($redirectUrl);
echo"<a href='".$authorizeUrl."'>Let's log in</a>";
}else{ /*we're in*/
if(!isset($_COOKIE['access_token'])) {
$token = $fsObjUnAuth->getAccessToken($thecode, $redirectUrl);
setcookie('access_token', $token->access_token);
$_COOKIE['access_token'] = $token->access_token;
}
$fsObjUnAuth->setAccessToken($_COOKIE['access_token']);
echo "we're in";
echo"<br><a href='mypage.php?logout=true'>Logout</a>";
}
?>
答案 0 :(得分:1)
在取消设置之前,您是否尝试更改过期日期的值?似乎unset不会破坏cookie。
答案 1 :(得分:1)
你本身并不能真正“退出”。每个Foursquare文档的令牌永远不会过期。你正在做正确的事情。您需要点击https://foursquare.com/oauth2/authorize
而不是https://foursquare.com/oauth2/authenticate
。点击/authorize
将强制用户重新验证其身份,(重新登录),并重新授权您的应用,为您的应用提供新的访问令牌,以便在本地存储。