2011-07-29 5 views
0

タイトルには奇妙な問題があります。私のインデックスページ上の別のリンクをクリックすると、再びインデックスにリダイレクトされます。私は両方のページに同じ許可コードを書いています。Facebook Permission Redirects Index別のページをクリックすると

<?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>"); 
    } 
} 
関連する問題