Making OmniAuth, Devise and Koala work together

前端 未结 1 1826
小蘑菇
小蘑菇 2021-02-01 11:03

I have an app in which I am implementing authentication using devise and omniauth. Ive got the logging in / out etc figured out, what i wanted to know was, what is the most effi

相关标签:
1条回答
  • 2021-02-01 11:48

    You can accomplish this using something like Koala. When you authenticate the user, you can grab the access token. Assuming you've followed the Devise/Omniauth tutorial, you could do something like so:

      def self.find_for_facebook_oauth(response, signed_in_resource=nil)
        data = response['extra']['user_hash']
        access_token = response['credentials']['token']
        user = User.find_by_email(data["email"])
        # only log in confirmed users
        # that way users can't spoof accounts
        if user and user.confirmed?
          user.update_attribute('fb_access_token', access_token) 
          user
        end
      end
    

    Once you have the access token, you could then do something like:

    @graph = Koala::Facebook::API.new(@user.fb_access_token)
    profile_image = @graph.get_picture("me")
    

    In my app, I check to see if a user is logged in when the callback from Facebook comes. If they are, I assume the request was to link accounts. If they're not, I assume it's a login request.

    0 讨论(0)
提交回复
热议问题