2011-07-29 28 views
0

正如標題所說,我有一個奇怪的問題。當我點擊我的索引頁上的另一個鏈接時,它會重定向到索引。我在兩頁上都寫了相同的權限代碼。Facebook權限重定向索引當點擊另一頁

這裏是我的代碼:

<?php 


$code = $_REQUEST["code"]; 

if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email,publish_stream,offline_access"; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" 
    . $app_secret . "&code=" . $code . "&scope=email,publish_stream,offline_access"; 

$access_token = file_get_contents($token_url); 

$graph_url = "https://graph.facebook.com/me?" . $access_token; 

$user = json_decode(file_get_contents($graph_url)); 

?> 

我寫這篇文章的代碼,我已經在我的索引鏈接的所有網頁。

是我的代碼錯了,有服務器問題還是別的?

回答

0

索引頁面鏈接中的URL是否包含code變量。如果未在URL的查詢字符串部分中明確聲明,則將觸發Oauth對話框,如果已安裝應用程序,則用戶將被重定向到$my_url

在附註中,從您的代碼判斷,您可以使用現有的Facebook PHP SDK獲益。以下是使用包含上述行爲的當前(v3.0.0)SDK的代碼片段:

require 'facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

$fb_user_id = $facebook->getUser(); 

if ($fb_user_id) { 
    try { 
    $user = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    $fb_user_id = null; 

    $params = array(
     'redirect_uri' => $my_url, 
     'scope' => 'email,publish_stream,offline_access'); 

    $dialog_url = $facebook->getLoginUrl($params); 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 
}