Кнопка выхода из Foursquare - PullRequest
       40

Кнопка выхода из Foursquare

0 голосов
/ 28 февраля 2011

* Если вы заинтересованы, пожалуйста, смотрите ответ от Foursquare по этому вопросу в качестве комментария к этому сообщению *

Пожалуйста, помогите, я все еще борюсь с этим: (

Я создал кнопку, которая удаляет все файлы cookie, связанные с Foursquare. Проверено с Firebug, когда нажали, куки не установлены.

Также то же самое программирование удаляет токен, вставленный в базу данных. когда пользователь впервые входит в систему. Проверяется в базе данных, строка Исключен.

И вот что происходит:

  1. В новом браузере без файлов cookie пользователь входит в систему.
  2. Файлы cookie установлены, и в них вставлена ​​строка с токеном и идентификатором пользователя. база данных.
  3. Пользователь выходит из системы.
  4. Файлы cookie сброшены и строка удалена из базы данных

  5. Теперь другой пользователь хочет войти в систему. Он нажимает <a href='".$authorizeUrl."'>Log in</a> в моем веб-приложении.

  6. Отображается страница входа в Foursquare, НО, прежде чем он / она сможет заполнить форму на странице перенаправляется обратно в мое веб-приложение с маркером предыдущего пользователя и информация!

Единственный способ, которым я могу начать с чистого листа, без точки 6, это удалив все куки из моего браузера вручную: (

Будут оценены любые идеи, я не знаю, куда им следовать. Ниже кода, который я использую, попробуйте, вы увидите, как происходит шаг 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>";   

 }             

?>

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Вы не можете "выйти" как таковые.Токен никогда не истекает в документах Foursquare.Вы делаете все правильно с вашей стороны.Вам нужно нажать https://foursquare.com/oauth2/authorize вместо https://foursquare.com/oauth2/authenticate.Нажатие /authorize заставит пользователя повторно подтвердить свою личность (повторно войти в систему) и повторно авторизовать ваше приложение, предоставив вам новый токен доступа для локального хранения вашего приложения.

1 голос
/ 28 марта 2011

Вы пытались изменить значение даты истечения срока действия куки, прежде чем сбросить его? Кажется, что unset не уничтожает cookie.

...