Почему я получаю сообщение об ошибке «Ошибка перенаправления страницы»?

Я получил это от nettuts, может кто-то, пожалуйста, скажите мне, почему я получаю ошибку «перенаправление страницы неправильно»?

<?php # We require the library require("facebook.php"); # Creating the facebook object $facebook = new Facebook(array( 'appId' => 'APP_ID_HERE', 'secret' => 'APP_SECRET_HERE', 'cookie' => true )); # Let's see if we have an active session $session = $facebook->getUser(); if(!empty($session)) { # Active session, let's try getting the user id (getUser()) and user info (api->('/me')) try{ $uid = $facebook->getUser(); # req_perms is a comma separated list of the permissions needed $url = $facebook->getLoginUrl(array( 'req_perms' => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos' )); header("Location: $url"); } catch (Exception $e){} } else { # There's no active session, let's generate one $login_url = $facebook->getLoginUrl(); header("Location: ".$login_url); } 

Related of "Почему я получаю сообщение об ошибке «Ошибка перенаправления страницы»?"

Вы перенаправляете аутентифицированный пользователь в $facebook->getLoginUrl(array(...)) , создавая цикл перенаправления.

Вы должны перенаправлять только не прошедших проверку пользователей (перенаправление с req_perms должно быть в разделе else ). Перенаправление в try должно происходить только в том случае, если вы обнаружите, что пользователь не предоставил вам все необходимые разрешения.

Вы можете проверить предоставленные разрешения, вызвав:

 $perms = $facebook->api(array( 'method' => 'fql.query', 'query' => 'SELECT email,user_birthday,status_update,publish_stream,user_photos,user_videos FROM permissions WHERE uid=' . $facebook->getUser() )); 


Измененный код:

 <?php # We require the library require("facebook.php"); # Creating the facebook object $facebook = new Facebook(array( 'appId' => 'APP_ID_HERE', 'secret' => 'APP_SECRET_HERE', 'cookie' => true )); # Let's see if we have an active session $session = $facebook->getUser(); if(empty($session)) { # There's no active session, let's generate one $url = $facebook->getLoginUrl(array( 'req_perms' => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos' )); header("Location: $url"); exit; } // user is logged in 

Если вы используете последний PHP SDK, было сделано несколько изменений, и разрешения, которые вы запрашиваете, не работают.

Вот обновленный код.

 <?php # We require the library require("facebook.php"); # Creating the facebook object $facebook = new Facebook(array( 'appId' => 'APP_ID_HERE', 'secret' => 'APP_SECRET_HERE', 'cookie' => true )); # Let's see if we have an active session $session = $facebook->getUser(); if(empty($session)) { # There's no active session, let's generate one $url = $facebook->getLoginUrl(array( "response_type"=>"token", //Can also be "code" if you need to "scope" => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos' , "redirect_uri"=> "http://test.com" //Your app callback url )); header("Location: $url"); exit; } // user is logged in 

Дополнительная информация: http://developers.facebook.com/docs/authentication/