2011-07-18 10 views
0

[注:最初の2つの答え、私が書いたものを含み、まだ「オプション」fql.multiqueryの問題に対処していない。]私はFacebookのFQLを使用していたとき、私は学校のリストを取得することができますfacebook fqlを使って、学校の場所を知るにはどうすればいいですか?

私は出席している、または友人が出席している。具体的には、私は学校の名前を得ることができ、それはFacebookのIDです。しかし、私はこれらの学校についてのより深い情報をどのように照会するのか分かりません。

具体的には、学校の所在地を知りたいと思います。しかし、私はどのFacebookのグラフ実体(または他のもの)がそれらの学校児童の一部であるのか分かりません。

これらの学校がどこにあるのかをFacebookからどのように知ることができますか?

オプション:最初の場所で学校のリストを返す同じマルチクエリでこれを行うことができればさらに良いでしょう(これはmy IDのuserテーブルとuserテーブルに対する別のクエリです私の友人のいくつかのidsのために)。

上記の段落で説明したオプション部分の拡張バージョンです(別の質問としてこれを追加しましたが、例示的なデータをより関連性のあるものにするために、私はそれが黙って消えたことを知りました。私は、あまりにも似ている質問を除外するために設計されたスタックオーバーフローのいくつかの機能を乗り越えたと仮定していますので、代わりに、これは私が上の段落の意味を明確にしたものです)

Facebookのjavascript sdkを使用すると、これは自動的に失敗します:

FB.login(function(response){ 
    disp('loginResponse', response); 
    var userQuery= FB.Data.query(
    'select uid,name,education from user where uid= {0}' 
     , response.session.uid); 

    var friendlist = FB.Data.query(
    'select uid2 from friend where uid1 = {0} order by rand() limit 10' 
    , response.session.uid); 

    var friends = FB.Data.query(
    'select uid,name,education from user where uid in (select uid2 from {0})' 
    , friendlist); 

    var friendSchools= FB.Data.query(
    'select page_id,name,location from page where page_id in (select education.school.id from {0})' 
    , friends); 

    self.queries= [userQuery, friendlist, friends, friendSchools]; 
    FB.Data.waitOn(queries 
     , function() {alert(1)}); 
    }) 

私は友達を削除するとクエリ配列から学校要素は、それだけで正常に動作します、と友人は、このようなオブジェクトによって表されることがあります、そのクエリができるように

{ 
    uid: '...', 
    name: '...', 
    education: 
    [ 
     { 
     school: 
      { 
      id: '115920001751600', 
      name: 'Burlington High School' 
      }, 
     year: 
      { 
      id: '138792749476094', 
      name: '1978' 
      }, 
     type: 'High School' 
     }, 
     { 
     school: 
      { 
      id: '20697868961', 
      name: 'Boston University' 
      }, 
     degree: 
      { 
      id: '188387604516411', 
      name: 'BS' 
      }, 
     year: 
      { 
      id: '103823546338323', 
      name: '1982' 
      }, 
     type: 'College' 
     } 
    ] 
} 

だから、どのように私はfriendSchoolsクエリのWHERE句を再構築します実行された?

つまり、fquery.meryを使用して、マルチクエリーの他の場所で返された学校(または他のそのようなエンティティ)に関する情報を見つけるにはどうすればよいですか?

答えて

1

既にある学校IDに基づいてグラフを照会するには、バッチリクエスト(詳細はこちら:https://developers.facebook.com/docs/reference/api/batch/)を使用することをお勧めします。学校の所在地は、返されるデフォルトの基本情報(以下の例)で取得できます。

{ 
    "id": "6192688417", 
    "name": "Stanford University", 
    "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/41571_6192688417_2310209_s.jpg", 
    "link": "https://www.facebook.com/stanford", 
    "likes": 203153, 
    "category": "Education", 
    "website": "http://www.stanford.edu", 
    "username": "stanford", 
    "founded": "1891", 
    "location": { 
     "street": "450 Serra Mall", 
     "city": "Stanford", 
     "state": "CA", 
     "country": "United States", 
     "zip": "94305", 
     "latitude": 37.42895, 
     "longitude": -122.1697 
    }, 
    "public_transit": "http://transportation.stanford.edu", 
    "general_info": "Located between San Francisco and San Jose in the heart of Silicon Valley, Stanford University is recognized as one of the world's leading research and teaching institutions.\n\nLeland and Jane Stanford founded the University to \"promote the public welfare by exercising an influence on behalf of humanity and civilization.\" Stanford opened its doors in 1891, and more than a century later, it remains dedicated to finding solutions to the great challenges of the day and to preparing our students for leadership in today's complex world.", 
    "checkins": 9938 
} 
+2

それは、このことは注目に値しますFacebook自体が情報を検証したり入力したりすることはないため、取得する情報が正確であるとは限りません。 –

+0

わかりました。確かに、ID自体はグラフ上のノードであり、それ以上の資格は必要ありません。つまり、バッチAPIは私の目的では醜いように見えます(あなたは rdm

0

そして、私はページテーブルを照会したいと思っています。たとえば、次のように

select name,location from page where page_id = 87873693141 

(それは私がまだマルチクエリのwhere句にリストに私の教育の学校のIDを抽出する方法を把握しようとしている、と述べた。)

関連する問題