Php Foursquare注销按钮

Php Foursquare注销按钮,php,button,oauth,logout,foursquare,Php,Button,Oauth,Logout,Foursquare,*如果有兴趣,请查看Foursquare对此问题的回答,作为对此帖子的评论* 请帮帮我,我仍在努力解决这个问题:( 我创建了一个删除所有Foursquare相关Cookie的按钮。 通过Firebug检查,当单击时,Cookie未设置 同样的编程也会删除插入数据库中的令牌 当用户首次登录数据库时。签入数据库时,该行为 删除 下面是发生的情况: 在没有cookie的全新浏览器中,用户登录 设置Cookies,并在其中插入带有令牌和用户id的行 数据库 用户注销 取消设置Cookies并从数据库中删

*如果有兴趣,请查看Foursquare对此问题的回答,作为对此帖子的评论*

请帮帮我,我仍在努力解决这个问题:(

我创建了一个删除所有Foursquare相关Cookie的按钮。 通过Firebug检查,当单击时,Cookie未设置

同样的编程也会删除插入数据库中的令牌 当用户首次登录数据库时。签入数据库时,该行为 删除

下面是发生的情况:

  • 在没有cookie的全新浏览器中,用户登录
  • 设置Cookies,并在其中插入带有令牌和用户id的行 数据库
  • 用户注销
  • 取消设置Cookies并从数据库中删除行

  • 现在,另一个用户想要登录。他/她在我的web应用程序中单击

  • 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>";   
    
     }             
    
    ?>
    

    在取消设置cookie之前是否尝试更改其过期日期的值?似乎取消设置不会破坏cookie。

    您不能真正“注销”就其本身而言。根据Foursquare docs,代币将永远不会过期。您在这方面做的一切都是正确的。您需要点击
    https://foursquare.com/oauth2/authorize
    而不是
    https://foursquare.com/oauth2/authenticate
    。点击
    /authorize
    将强制用户重新验证其身份,(重新登录),并重新授权您的应用程序,为您的应用程序提供一个新的访问令牌以在本地存储。

    我正在执行setcookie(“访问令牌”,时间()-3600);以取消设置。这不对吗?(我正在使用其余的Foursquare Cookie执行此操作)不,这是正确的方法。我可能错了,但可能您必须查看更新cookie的位置并可能需要刷新?如果这不影响它,请尝试使用print\r($\u cookie['access\u token')查看cookie仍然具有什么值;我正在编辑帖子,以便向您展示我正在使用的代码。如果可以,请尝试。您将看到单击“注销”后cookie是如何被删除的,但第6步发生了,并且无法进行新登录(在登录之前再次设置了cookie):(目前我们还不准备允许第三方应用程序将用户从foursquare.com注销。如果您认为从您的应用程序注销的用户应该从foursquare.com注销,我们建议发出显著的行动呼吁(例如,“注销foursquare!”)在您的注销页面上。~ak--我对此有问题,我正在使用Foursquare API,如果我登录myapp,然后我想搜索Foursquare信息,但如果在web浏览器中,其他用户登录Foursquare,我的搜索结果是来自活动帐户的信息(不是我的信息),我如何控制?