9

この質問は、OmniAuthを使用するときにユーザーのFacebookアカウントから必要なアクセスを指定するにはどうすればよいですか?に似ています。ただし、注意が必要です。

OmniAuthを使用して、自分のWebサイトでFacebookユーザーを認証しています。通常のログイン/登録の場合、ユーザーに標準のFacebook権限を要求することは許容されます。しかし、私のサイトには、拡張されたアクセス許可(Facebookの写真へのアクセス)を必要とする機能があります。ユーザーが当サイトのFacebook写真機能を使用する場合、または使用する場合にのみ、ユーザーの拡張アクセス許可を要求したいと思います。

omn​​iauthのFacebook権限を設定する方法について、Webで見つけたすべての回答は、次のように、OmniAuth初期化子にスコープオプションを追加するだけです。

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret', {:scope => 'email,offline_access,the,scope,you,want}

ただし、スコープを動的に定義する必要があります。これにより、ユーザーが写真機能を使用する場合にのみ写真のアクセス許可を求められますが、初めてログインまたは登録する場合はそうではありません。

誰もがこれを行う方法を知っていますか?前もって感謝します。

4

3 に答える 3

11

You may have figured out a solution to this problem already but I figured I'd chime in for those still looking to solve this. My solution allows you to request as little Facebook permissions as possible up front, and then dynamically request them as your app needs them.

http://www.mikepackdev.com/blog_posts/2-Dynamically-Requesting-Facebook-Permissions-with-OmniAuth

Hope this helps!

于 2011-04-29T06:06:24.843 に答える
5

Omniauthに追加しているようですが、まだベータ版です。

追加します

:setup => true

プロバイダーに送信してから、必要なオプション(クレデンシャル/スコープ)を動的に設定するメソッドを作成します。

https://github.com/intridea/omniauth/wiki/Setup-Phase

https://github.com/intridea/omniauth/wiki/Dynamic-Providers

于 2011-03-07T16:51:19.670 に答える
-1

あなたはそれを適切に行うことはできないと思います。ユーザーが写真機能のみを使用していることを確認できないためです。ユーザーは、アプリケーションの写真機能およびその他の機能のすべての部分にアクセスできます。ユーザーがログインしていて、写真機能から他の機能に切り替えた場合、再ログインを要求することはできません。この他の機能にアクセスします。

すべてのユーザーは、許可するアクセスの種類を実際に確認するわけではないため、多くの許可を求めることについて心配する必要はありません。

于 2011-01-20T20:26:19.163 に答える