はどのようにして、しばらく前のFacebookに署名した人々に対処することになっています。あなたのサイトに来てください(Facebookにすでにログインしていることが検出されたので)リンクを継続してください。そして、このページにあなたがこのエラーを表示します。FacebookのPHP SDK - OAuthException - のOAuth2
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /var/www/html/lib/base_facebook.php on line 1039
私はあなたがこれを防ぐことになっているか理解していませんか?これは、あなたがFacebookに返信してaccess_tokenを取得するという署名された情報と関係がありますか?署名された情報が期限切れになるようです(発行日はdateです)。あなたのウェブサイトの流れでこれを処理する正しい方法は何ですか?これに代えて
<?php
$user = $facebook->getUser();
try {
// attempt to do a call just to see if you are going to have this issue
$profile = $facebook->api('/me');
} catch (Exception $e) {
$user = false;
}
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
:
は、あなたがこのようなコードを記述することが期待される
<?php
$user = $facebook->getUser();
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
はバックのFacebook SDKから$ユーザーの取得のみクッキーがあるあなたを教えているようです。 API呼び出しを行うときに実際に動作するかどうかはわかりません。
UPDATE: したがって、この方法では、私の唯一の問題は...ユーザーが自分のサイト上でクッキーを持っていますが、API呼び出しが失敗したときに - 私はそれらを接続ボタンを示しています。ユーザーが接続ボタンをクリックすると、すぐに表示され消えます。実際に発生した「auth.login」ではないため、JavaScriptリダイレクトを介してstart.phpページに送信されることはありません。どのように他の人はこれを処理するのですか私は困惑している。どうやってこれをしようとしているのか他の欠陥があるかどうか教えてください。
ドメイン名app_idとapp_secretが両方のサイト(fbユーザーが存在することを確認したサイトとリダイレクト先のサイト)で同じであることを確認しましたか?そして、最初のサイトでfacebookオブジェクトを初期化するために使用されるドメインは、次のサイトでより高いレベルのドメインでなければなりません。 –
これはすべて同じサイトにあります。正常にログインした後、/(またはindex.php)からstart.phpにユーザをリダイレクトしたいと思っています – BuddyJoe