2012-03-08 13 views
0

Facebookのiframeアプリケーションを構築する際に奇妙な問題が発生しています。アプリはGo To Appページの無限ループに詰まっているようだ。Facebook PHP SDK 3.1.1「アクセストークンの検証中にエラーが発生しました」アプリケーションページに移動

ユーザーが[Go To App]ページでアプリケーションを認証してアプリに戻ると、/ me api呼び出しで「アクセストークンの検証エラー」例外がスローされます。私はチェックして、Signed Requestに有効なアクセストークンがある(facebookアクセストークンデバッグツールでテスト済み)。私はsetAccessToken()メソッドでそれを設定しようとして失敗しました。 getUser()メソッドは正常にユーザーIDを返しますが、/ mei api呼び出しではまだハングします。

これはすべてのブラウザで発生するわけではありませんが、私はちょうどChromeで見かけられないことがあります。私はP3Pヘッダーを使ってIEで修正しました。それはFirefoxで正常に動作します。

私はかなり詰まっていて、私は抜け出すために髪が切れているので、どんなアイデアも大歓迎です。どうもありがとう。

完全なエラーメッセージ:「アクセストークンの検証中にエラーが発生しました:www.facebook.comにログインし、指示に従うまでアプリにアクセスできません」

以下のコードです。この

// At this line the "Error validating access token" error shows up 
$this->_user = $this->facebook->api('/me','GET'); 
+0

あなたは_facebookLogin'は私も同じ問題が、クロムに直面しています –

+0

間違っている、このコードは '公共の機能、例えば(あなたの完全なコードを置くことができます。@Cazacuヴラドあなたが解決策を見つけた場合は、ここに感謝 –

答えて

0

編集この部分

// At this line the "Error validating access token" error shows up 
$this->_user = $this->_facebook->api('/me'); 

手であなたのセッションを破壊する程度?これらのパラメータをデバッグしましたか?

unset($_SESSION['fb_'.$YOUR_API_KEY.'_code']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_access_token']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_user_id']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_state']); 

私はほとんどあなたと同じコードを使用していますが、私はfileUploadとクッキーのパラメータを使用していませんよ。

+0

感謝を投稿してください私が見た限りでは、グラフ呼び出しのデフォルトはGETなので、すでにそれを使っていました。 –

0

何に

$this->_facebook = new Facebook(
    array(
     'appId' => $this->_config['appId'], 
     'secret' => $this->_config['secret'], 
     'cookie' => true, 
     'fileUpload' => true 
    ) 
); 

$this->_signedRequest = $this->_facebook->getSignedRequest(); 

// Doing something with signed request, not FB related 

$this->_userId = $this->_facebook->getUser(); 

if($this->_userId) { 
    try{ 
     // At this line the "Error validating access token" error shows up 
     $this->_user = $this->_facebook->api('/me'); 

     // Some more irrelevant code here 

    } catch (Exception $e){ 
     $this->_facebook->destroySession(); 
     $this->_facebookLogin(false); 
    } 
} else { 
    $this->_facebook->destroySession(); 
    $this->_facebookLogin(false); 
} 

// The _facebookLogin method 
public function _facebookLogin($perms = 'email,user_birthday,publish_stream,video_upload'){ 
    $data = array(
     'fbconnect' => 0, 
     'redirect_uri' => 'aredirecturl.com' 
    ); 

    if(!empty($perms)) { 
     $data['scope'] = $perms; 
    } 
    echo '<script type="text/javascript">window.top.location.href = "'.$this->_facebook->getLoginUrl($data).'";</script>'; 
    exit; 
} 
関連する問題