【问题标题】:Making OmniAuth, Devise and Koala work together让 OmniAuth、Devise 和 Koala 协同工作
【发布时间】:2011-09-25 20:35:22
【问题描述】:

我有一个应用程序,我在其中使用设计和omniauth 实现身份验证。我已经弄清楚了登录/注销等问题,我想知道的是,什么是连接到用户图形 api 端点的最有效方式,并已初始化并准备好在我的应用程序中使用。

例如:如果在个人资料页面上我想做,

profile_image = current_user.fbgraph.get_picture("me")

我将如何以最少的 API 调用来实现这一点(我将在整个应用程序中使用类似的调用)

【问题讨论】:

    标签: ruby-on-rails-3 devise omniauth koala


    【解决方案1】:

    您可以使用Koala 之类的方式完成此操作。当您对用户进行身份验证时,您可以获取访问令牌。假设您已关注Devise/Omniauth tutorial,您可以执行以下操作:

      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
    

    获得访问令牌后,您可以执行以下操作:

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

    在我的应用程序中,当来自 Facebook 的回调到来时,我会检查用户是否已登录。如果是,我假设请求是链接帐户。如果不是,我认为这是一个登录请求。

    【讨论】:

    • 小记:用最新的考拉,上面一行应该是@graph = Koala::Facebook::API.new(@user.fb_access_token)(GraphAPI现在只是API)。
    • 你会把@graph = Koala::Facebook::API.new(@user.fb_access_token) 代码行放在哪里? (假设我们使用设计和omniauth)。此外,self.find_for_facebook_oauth 代码看起来与我的完全不同,尽管我完全按照设计 wiki 向我展示的方式进行操作。
    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 2013-11-30
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多