0

*興味がある場合は、この投稿へのコメントとして、この問題に関する Foursquare からの回答をご覧ください*

助けてください、私はまだこれと戦っています:(

Foursquare 関連の Cookie をすべて削除するボタンを作成しました。Firebug で確認したところ、クリックすると Cookie の設定が解除されました。

また、同じプログラミングにより、ユーザーが最初にログインしたときにデータベースに挿入されたトークンが削除されます。データベースにチェックインすると、行が削除されます。

そして、何が起こるかは次のとおりです。

  1. Cookie のない新しいブラウザーで、ユーザーがログインします。
  2. Cookie が設定され、トークンとユーザー ID を含む行がデータベースに挿入されます。
  3. ユーザーがログアウトします。
  4. Cookie の設定が解除され、データベースから行が削除されました

  5. <a href='".$authorizeUrl."'>Log in</a> ここで、別のユーザーがログインしようとしています。彼/彼女は私の Web アプリをクリック します。

  6. 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>";   

 }             

?>
4

2 に答える 2

1

設定を解除する前に、Cookie の有効期限の値を変更しようとしましたか? unset は Cookie を破棄しないようです。

于 2011-03-28T16:14:18.553 に答える
1

それ自体を「ログアウト」することはできません。トークンは、Foursquare のドキュメントに従って期限切れになることはありません。あなたは自分の側ですべてを正しく行っています。https://foursquare.com/oauth2/authorizeの代わりに打つ必要がありhttps://foursquare.com/oauth2/authenticateます。ヒット/authorizeすると、ユーザーは ID の再認証 (再ログイン) を強制され、アプリを再承認して、アプリ用にローカルに保存する新しいアクセス トークンが与えられます。

于 2011-12-10T03:46:42.843 に答える