2

ページのタブに Facebook アプリがあります。ユーザーがそこにアクセスすると、基本的なプロファイル データと友達リストにアクセスする許可を求められます。ユーザーが権限ダイアログで「キャンセル」をクリックすると、アプリにリダイレクトされます。無限ループが作成され、Facebook がそれを検出し、アプリが Facebook のポリシーに準拠していないというメッセージを表示します。redirect_uriユーザーがアクセス許可を受け入れるか拒否するかにかかわらず、これは同じであることがわかりました。ユーザーが拒否した (「キャンセル」をクリックした) ことを検出し、無限ループを回避するために別の場所にリダイレクトする方法を探しています。私はFacebookのドキュメントを理解しようとしていますが、いたるところにあります:(

これが私のコードの一部です...

$loginUrl   = $facebook->getLoginUrl(array(
"redirect_uri"=>"https://www.facebook.com/pages/".$truepageid."/".$truepageid."?sk=app_xxxxxxxxxxxx"

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    d($e);  // d is a debug function defined at the end of this file
    $user = null;

  }
}

if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    exit;
}
4

1 に答える 1

2

error_reason無限ループを防ぐために照会できる「user_denied」などの情報を含む戻りURIでGET-Paramを取得する必要があります

if (isset($_GET['error_reason']) && $_GET['error_reason'] == 'user_denied') {
    // dont redirect to login page
}
else
{
    // redirect to fb-login
}
于 2013-07-16T21:22:02.270 に答える