2012-04-10 2 views
2

OmniAuthを使ってFacebookに接続しました。私は情報の様々な部分を引っ張っているし、そこに1つだけのタイプがある場合は情報を引き出すことに問題はありません。例えば、電子メールアドレスを取得するために、私はちょうどuser.rbに次のように配置します。Rubyで複数のエントリを持つFacebookハッシュからデータを引き出す方法

user.email = auth["info"]["email"] 

問題は、複数のエントリです。たとえば、教育の場合、2つの結果があります。 1つはプナウー学校と呼ばれる高等学校で、もう1つはアーバナ・シャンペーン校のイリノイ大学と呼ばれる大学です。

education: 
    - !map:Hashie::Mash 
     school: !map:Hashie::Mash 
     id: "105510192816251" 
     name: Punahou School 
     type: High School 
    - !map:Hashie::Mash 
     school: !map:Hashie::Mash 
     id: "163536409904" 
     name: University of Illinois at Urbana-Champaign 
     type: College 

私が使用して最初の学校を引くことができた:

if auth["extra"]["raw_info"]["education"] 
    user.school = auth["extra"]["raw_info"]["education"][0]["school"]["name"] 
end 

これに伴う問題は、それが唯一の高校で最初の学校を引く、です。

  1. 私は大学がほしいと思うなら、私はそれをUrbana-Champaignのイリノイ大学にどのように引き渡すことができますか?高校とカレッジがある場合、私はそのコードが大学のどの学校であれ拾ってほしいと思うでしょう。
  2. 今、私は高校と大学の両方が欲しいとしましょう。どのように私は両方を引っ張って、私はPunahouが高校でUIUCが大学であることに気づくでしょうか?
  3. 複数の大学がある場合は、どのように私は、最近の大学のエントリを引くでしょうか?

答えて

0

OmniAuthとLinkedInで同様の質問がありましたが、あなたの質問に出くわしました。 LinkedInのハッシュは、上のFacebookの振る舞いに似た形式の3つの現在の位置を返します。 [0][1]に変更して、あなたの例で大学を引き出します。必要なエントリごとに別々の行を使用します。 LinkedInハッシュが、最新のエントリが[0]の位置にある順に3つの現在のポジションを返したことがわかりました。

関連する問題