2017-07-05 6 views
0

私はomniauth Facebookを利用しています。未成年者が参加できないように年齢確認を実施したいと思います。OmniauthがFacebookにデータを渡して認証後に返品するようにしました

私はサインアップページを表示する前に、生年月日をユーザーに尋ねることに決めました。

ユーザーが有効な生年月日を指定してFacebookに参加することを選択した場合は、その生年月日をFacebookに送信し、認証が完了したときに返されるようにしますアカウントを作成するときに使用します。

意味がありますか?私は以前に集められた属性の束を持っていることをオムニバスに伝えることが可能ですか?私はそれらを失わないので、あなたにそれらを送り返して、生年月日を2回尋ねなければなりませんか?

それでも、生年月日をもう一度聞く以外に何ができますか?

答えて

0

あなたの "誕生日"を渡すようにFacebookに依頼できますが、そのためには、 "user_birthday"スコープを要求することで、oauthフローでそのスコープを尋ねる必要があります。次に、それを取得するための新しいリクエストを発行する必要があります。

したがって、oauthフローの後で、user_birthdayのスコープを持つトークンが必要です。あなたは、次のURIを構築することができ、そのトークンで

https://graph.facebook.com/v2.4/me?fields=birthday&access_token=THE_TOKEN_RECEIVED_THROUGH_OMNIAUTH 

そのリソース(または任意のライブラリしたい)を取得するためにはNet :: HTTPを使用します。あなたのアクセストークンが誕生日のスコープへのアクセスを許可している場合、あなたは値を読むことができるように解析する必要があるjson応答を得るでしょう。

また、誕生日の範囲に許可することをユーザーが拒否する状況も考慮する必要があります(誕生日の範囲を使用することができると考えていると言います)。彼らはあなたが必要とする年齢ではないので、あなたがFacebookにアクセスすることを拒否します)、登録を中止すること、続行すること、またはあなたが適切であると考えるものによって。また、ユーザーがfacebookに設定された誕生日を持っていない可能性があることを忘れないでください。

最初に入力した誕生日を追跡したい場合は、セッション[:user_birthday]などに保存してください。

関連する問題