3

Facebookクエリ言語(FQL)を使用して、アプリをインストールした友達のリストを取得しようとしています。アプリを認証してアプリアクセストークンを取得した後、次のクエリを実行しています(JavaとRestFBを使用して実行していることに注意してください)。

https://api-read.facebook.com/method/fql.query?query=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json

これはエラーを返します:

..."error_code":102,"error_msg":"Requires user session"

同様に、グラフAPIでFQLを使用しようとすると(以下のように)、同じエラーが発生します。

https://graph.facebook.com/fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json

そこで、ユーザーアクセストークンを期待どおりに使用してみました。私はかなりの部分を検索し、これに出くわしました: グラフAPIを使用したFacebookの「Friends.getAppUsers」

これにはいくつかの素晴らしいアドバイスがあり、次のクエリを試すようになりました。

https://graph.facebook.com/<userId>/friends?fields=installed&access_token=<appAccessToken>&format=json

そして、これはアプリアクセストークンを持つ友達のリストを返します。

それが私の質問につながります。FQLでアプリアクセストークンを使用して友達のリストを取得できないのに、Graph APIで友達を取得できるのはなぜですか?

前もって感謝します、

ベン

4

2 に答える 2

2

最初に、fql.query は REST API からのものであり、非推奨になることをお知らせしたいと思います。

FB は、今後GRAPH API を使用することをお勧めします。

重要な注意事項: FQL は廃止されませんが、REST API を使用する fql.query メソッドのみが廃止されます。

したがって、引き続き FQL を使用し、GRAPH API を使用して FQL を実行できます。

http://developers.facebook.com/docs/reference/fql/で詳細を読む

FB のコード例

 //get user access_token
  $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
    . $app_id . '&redirect_uri=' . urlencode($my_url) 
    . '&client_secret=' . $app_secret 
    . '&code=' . $code;
  $access_token = file_get_contents($token_url);

  // Run fql query
  $fql_query_url = 'https://graph.facebook.com/'
    . '/fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()'
    . '&' . $access_token;
  $fql_query_result = file_get_contents($fql_query_url);
  $fql_query_obj = json_decode($fql_query_result, true);

  //display results of fql query
  echo '<pre>';
  print_r("query results:");
  print_r($fql_query_obj);
  echo '</pre>';

私は実際にあなたの質問に答えていないことを知っています.

于 2012-03-16T07:19:58.750 に答える
0

FQL クエリでアプリ トークンを使用すると、次の応答が返されます。

"message": "このリソースをリクエストするには、ユーザー アクセス トークンが必要です。"

ユーザー アクセス トークンを使用する必要があるようです。実際、アプリ トークンからテスト ユーザー認証トークンに切り替えると、機能します。:-/

于 2014-01-16T08:11:29.573 に答える