2012-02-12 4 views
0

複数のPHPページを含むFacebookアプリケーションを作成しています。すべてのファイルのFacebookオブジェクトを再インスタンス化すると、無効なOAuthエラートークンの署名が生成されます。複数のPHPファイルでFacebookオブジェクトを使用する

私は数多くの選択肢を試しました。また、$ framebook-> getSession()関数は新しいフレームワークでは機能せず、非推奨になりました。

私はセッションでアクセストークンを保持し、次のPHPファイルのFacebookオブジェクトに同じアクセストークンを使用しようとしました。私が使用して私のアプリをインスタンス化しまし私の最初のページ

$app_id = "107684706025330"; 
$app_secret = "__SECRET__"; 
$my_url = "http://www.sentimentalcalligraphy.in/wp-content/then_n_now/"; 
$config = array(
'appId' => $app_id, 
'secret' => $app_secret, 
'cookie' => true, 
); 
session_start(); 
$facebook = new Facebook($config); 
$access_token = $facebook->getAccessToken(); 
echo $access_token; 
$_SESSION['fob'] = $access_token; 

次のPHPファイルで、私は二度目のFacebookのオブジェクトを使用する必要がありました。

$config = array(
'appId' => '107684706025330', 
'secret' => '__SECRET__', 
); 
$facebook = new Facebook($config); 
$access_tocken = $_SESSION['fob']; 
echo $access_token; 
$facebook->setAccessToken($access_token); 

私はまだ取得アクセストークンが無効であるというエラー。どのように私はこれを使用する必要があります。私はFacebookのAPIのためのいくつかのコードを持っている

よろしくお願いし
$friends = $facebook->api('/me/friends','GET'); 

、 ナシル

+1

どこでも 'app_secret'を投稿してはなりません。あなたの 'app_id'と' app_secret'では誰でもあなたのアプリケーションを偽装するAPIを呼び出すことができます。 – Lix

+0

OAuth 2.0プロセスのログイン部分が欠けていますか?それとも省略したのですか? – gremo

答えて

1

:私は私の第二のPHPファイルに次のコードを使用する必要があります。私はあなたと分かち合いたい。

// App user account and password 
$app_id = 'blabla'; 
$app_secret = 'blabla'; 
// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret, 
)); 
// Get User ID 
$user = $facebook->getUser(); 
// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 
$access_token = $facebook->getAccessToken(); 
if(isset($_GET["code"])){ 
    // Get our app user feed 
    $user_profile_feed = $facebook->api('/me'); 

    // Insert user id into users table while user login our app 
    // We have to control user who inserted our users table after before 
    $query_is_user = mysql_query("SELECT * FROM `users` WHERE `user_id` = ".$user_profile_feed['id']) or die("hata 1"); 
    $count = mysql_num_rows($query_is_user); 
    if($count == 0) { 
     mysql_query("INSERT INTO `users`(`user_id`) VALUES (".$user_profile_feed['id'].")") or die("hata 2"); 
     echo '<script language=Javascript>alert("Uygulamamiza Basariyla Giris Yaptiniz...");</script>'; 
    } 

    $token_url = "https://graph.facebook.com/oauth/access_token?" 
         . "client_id=" . $app_id . "&redirect_uri=" . "http://apps.facebook.com/machine_learning/" 
         . "&client_secret=" . $app_secret . "&code=" . $_GET["code"]; 
    $response = @file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 
    mysql_query("UPDATE users SET access_token='$params[access_token]' WHERE user_id='$user_profile_feed[id]'") or die("hata 4"); 
} 

$url = "https://graph.facebook.com/oauth/authorize?" 
     ."client_id=262609310449368&" 
     ."redirect_uri=http://apps.facebook.com/machine_learning/&scope=read_stream"; 
+0

これはOPの問題を技術的に解決するかもしれませんが、**あなたが問題であると分かったことの説明と解決方法を常に**含めてください。ここに大量のコードを投稿するのは良い方法ではありません。人々の質問に答えようとしています!それは素晴らしいです** **しかし、あなたもいくつかの説明を含める必要があります:) – Lix

+0

こんにちは、 あなたの返信ありがとうございます。 しかし、あなたが提案している解決策について私は初心者ではありません。 私が知りたいと思う主なものは、2番目のPHPファイルです。 $ friends = $ facebook-> api( '/ me/friends'、 'GET')などのコードを実行するにはどうすればFacebookオブジェクトを取得できますか? ; 新しいファイルにfacebookオブジェクトを再作成すると、エラーが生成されます:無効なOAuthアクセストークンの署名 –

関連する問題