OmniAuth を使用して Facebook に接続しました。さまざまな情報を取得していますが、1 種類しかない情報を取得しても問題はありません。たとえば、メール アドレスを取得するには、user.rb に次のコードを記述します。
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
これの問題は、高校である最初の学校だけを引っ張ることです。ここでいくつか質問があります。
- カレッジのみが必要な場合、イリノイ大学アーバナシャンペーン校を取得するにはどうすればよいですか? 高校と大学がある場合は、大学が何であれ、コードにその学校のみをピックアップさせたいと思います。
- さて、高校と大学の両方が欲しいとしましょう。プナホウが高校で UIUC が大学であることをどのように示しますか?
- 複数の大学がある場合、最新の大学エントリを取得するにはどうすればよいですか?