2011-08-27 81 views
0

我從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); 
} 
+2

如果發生異常,用它做什麼。 *永遠不要*扔掉它。 –

回答

4

您重定向身份驗證的用戶$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 
+0

你能幫我解決我上面粘貼的代碼嗎? :(,我不明白你的意思 – sasori

+0

我添加了修改後的代碼到我的答案 – Crack

0

如果您使用的是最新的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/

相關問題