2012-10-05 2 views
6

우리는 사용자가이 같은 최소한의 권한으로 가입시키는됩니다고안 + omniauth - 페이스 북의 추가 권한

Devise.setup do |config| 
    config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], 
       :scope => 'email,offline_access,user_about_me' 
end 

우리는이 가입 비율 (당신이 변환 높은 요청 적은 권한을) 증가 할.

예를 들어 사용자가 무언가를 공유하고 싶다면 publish_stream 권한이 필요합니다.

누구나 fb 권한을 향상시키는 방법을 알고 있습니까? 예 : 'email, offline_access, user_about_me, publish_stream'

사용자가 oauth 대화 상자를 다시 거쳐야한다는 것을 알고 있습니다. 그러나 어떻게해야합니까?

감사

+1

는 아직이 알아 낸? 나 자신에게 같은 질문을한다. ... – toxinlabs

답변

4

첫째 :

Devise.setup do |config| 
    config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], 
        :scope => 'email,offline_access,user_about_me', 
        :setup => true 
end 

routes.rb에 두 개의 경로를 추가

devise_scope :user do 
    get '/users/auth/:provider/upgrade' => 'omniauth_callbacks#upgrade', as: :user_omniauth_upgrade 
    get '/users/auth/:provider/setup', :to => 'omniauth_callbacks#setup' 
end 

첫 번째 경로는 user_omniauth_upgrade_path(:facebook)을 사용하여 사용자를 연결해야하는 곳입니다. 두 번째 설정 경로는 omniauth가 내부적으로 호출하는 콜백이며 scope 매개 변수를 변경하는 데 사용할 수 있습니다.

omniauth_callbacks_controller.rb로 이동합니다

def upgrade 
    scope = nil 

    if params[:provider] == "facebook" 
    scope = 'email,offline_access,user_about_me,publish_stream' 
    end 

    redirect_to user_omniauth_authorize_path(params[:provider]), flash: {scope: scope} 
end 

당신이 omniauth 구성 setup_path의 내부 setup: true은 기본적으로 호출 지정합니다. 이 방법을 사용하여 전략의 기본값에서 범위를 변경합니다. omniauth_callbacks_controller.rb이 추가 :

def setup 
    request.env['omniauth.strategy'].options['scope'] = flash[:scope] || request.env['omniauth.strategy'].options['scope'] 
    render :text => "Setup complete.", :status => 404 
end 

마지막으로, 귀하의 의견에 당신은 추가 할 수 있습니다

<%= link_to "Upgrade Access", user_omniauth_upgrade_path(:facebook) %> 

출처 : http://willschenk.com/setting-up-devise-with-twitter-and-facebook-and-other-omniauth-schemes-without-email-addresses/#passing-dynamic-scopes-to-omniauth

-2

페이스 북으로 로그인 만이 권한을 사용 - 1) 이메일이이 서비스의 권한 목록을 업그레이드 할 수 setup: true을 추가해야합니다) publish_stream

config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],{:scope => 'email, publish_stream', :client_options => { :ssl => { :ca_file => "#{Rails.root}/config/ca-bundle.crt" } } } 
+0

그게 무슨 뜻인지 모르겠다. 내가하고 싶은 일은 나중에 새 권한을 추가하는 것입니다. 어떤 시점에서 사용자는 upload_photo 권한이 필요한 작업을 원합니다. 어떻게 그 권리를 묻는 facebook connect로 팝업을 열 수 있습니까? – Matthias

관련 문제