1

問題

私が取り組んでいるサイトは、ユーザーがFacebookアカウントでサインインできるRailsアプリです。

Facebook Auth Dialogページで、基本的な情報と電子メールを提供するように求められます。その後、電子メールはデータベースに保存されます。

nilしかし、最近、またはのメールを持っているユーザーが多いことに気づきました""。Open Graph APIを使用して権限を確認しました(https://graph.facebook.com/#{id}/permissions)。許可を与えた人もいれば、email許可しなかった人もいます。

これがどのように起こるのか私にはわかりません。

私の実験

1

ドキュメントには次のように書かれていますが:

拡張認証ダイアログを使用している場合、次の権限は認証フロー内でユーザーが取り消すことはできません。初回認証の一部としてユーザーにこれらのアクセス許可を要求する場合、ユーザーはアプリケーションを続行して承認するためにこれらのアクセス許可を付与する必要があります

[認証ダイアログ]ページ(https://www.facebook.com/dialog/permissions.request?app_id=...&display=page&next=...&response_type=code&perms=email&fbconnect=1)で、パラメータを削除できperms=emailます。そうすると、電子メールは要求されません。

このダイアログでサインインすると、アプリはメールアドレスを受け取りません。

2

[アプリ]>[設定]>[権限]で、不要な権限を設定しようとしています。(これを試す前は、設定は空です)。

ただし、これらの設定は認証プロセスには影響しません。

質問

私が持っているセットアップ(Rails + Devise + Omniauth)を考えると、サインインする前にユーザーが電子メールの許可を与えることを確認することは可能ですか?

4

1 に答える 1

0

$permissions = $facebook->api("/me/permissions"); if( array_key_exists('email', $permissions['data'][0]) ) { // アクセス許可が付与されました! } else { // 権限がありません }

于 2012-10-11T10:10:20.107 に答える