2011-06-20 9 views
0

すべてのユーザーに同じアクセストークン。私はまだあまりにも、すべてのソリューションを更新SDKを使用するように言ったことをGoogleで検索しかし、地雷が更新されると、それ...それは私に未定義の関数エラーを与える...のgetSessionを(使用して何とかそれを得るために、多くのサイトで読んで)、それからaccess_tokenは取得します私は最終的にアクセストークンを取得する別の解決策を得たが、これはすべてのユーザーに同じアクセストークンを与えるようだ...問題がどこにあるのか?すべてのユーザーが確かに同じトークンを持つことはできません。FacebookのグラフAPI - 私は気が狂ったように長いので、私のユーザーのアクセストークンを取得しようとしている

$app_id   = $facebook->getAppId(); 
      $app_secret  = $facebook->getApiSecret(); 

      function callFb($url, $params) 
      { 
       $ch = curl_init(); 
       curl_setopt_array($ch, array(
        CURLOPT_URL => $url, 
        CURLOPT_POSTFIELDS => http_build_query($params), 
        CURLOPT_RETURNTRANSFER => true, 
        CURLOPT_VERBOSE => true 
       )); 

       $result = curl_exec($ch); 
       curl_close($ch); 
       return $result; 
      } 

      $params=array('client_id'=>$app_id, 'type'=>'client_cred', 'client_secret'=>$app_secret); 
      $url = "https://graph.facebook.com/oauth/access_token"; 
      $access_token = callFb($url, $params); 
      $access_token = substr($access_token, strpos($access_token, "=")+1, strlen($access_token));  
+0

Yuliyは、すでにあなたの問題への解決策を提供するが、私はあなたのための質問があります。これらのアクセストークンを永続化する予定ですか? offline_accessを取得する際に特に要求しない限り、FBから取得するアクセストークンは期限切れになります。また、FBユーザーにアクセストークンを格納する潜在的なセキュリティリスクもあります。 – Perception

+0

私はoffline_accessを取得しました。 –

答えて

3

問題は、ユーザーのアクセストークンが、アプリのアクセストークンを望んでいないというのFacebookを伝えている、あなたはtype=client_credを求めているということです。これは、インサイトへのアクセス、リアルタイム更新API、公開データなどの操作に使用されます。ユーザーデータを取得する場合は、そのフラグを渡すべきではありません。

あなたが本当にグラフAPIへの独自のアクセスをロールバックしたいならば、あなたは確かにhttps://developers.facebook.com/docs/authentication/で指示に従って、それを行うことができます。

+0

ありがとう...タイプ= client_credの代わりに何を使用すべきか教えていただけますか?それとも削除するだけですか? –

+0

あなたはそれの代わりに何も使用しないでください。あなたのWebサーバーからAPI呼び出しを行う場合(Javascriptを使用するのではなく)、デフォルトのWebサーバーフローが使用されます。 – Yuliy

+0

ありがとうございました。私はそれを試してみましょう。 はい、私はWebサーバーからAPI呼び出しを行うことを検討しています。 –

0

あなたはPHP SDKを使用していると言いますが、コード内のどこにも言及していません。主にFacebook's SDK Githubから言い換え

<?php 

    require('facebook.php'); 

    $fb = new Facebook(array('appId' => APP_ID, 'secret' => SECRET)); 

    $user = $fb->getUser(); 

    // if we have a valid user, we're logged in 
    if ($user) 
    { 
     // do stuff with the API using the $fb object 
    } 
    else 
    { 
     // redirect the user to the authentication page 
     header("Location: ".$fb->getLoginUrl()); 
    } 

例:

適切な方法はこれです。

関連する問題