加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 让OmniAuth,Devise和Koala一起工作

发布时间:2020-12-16 22:56:45 所属栏目:百科 来源:网络整理
导读:我有一个应用程序,我正在使用devise和omniauth实现身份验证.我已经找到了登录/退出等,我想知道的是,连接到用户图形api端点的最有效方法是初始化并准备好在我的应用程序中使用. 例如:如果在我想要的个人资料页面上, profile_image = current_user.fbgraph.ge
我有一个应用程序,我正在使用devise和omniauth实现身份验证.我已经找到了登录/退出等,我想知道的是,连接到用户图形api端点的最有效方法是初始化并准备好在我的应用程序中使用.

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

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

如何使用最少的API调用完成此操作(我将在整个应用程序中使用类似的调用)

解决方法

您可以使用类似于 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回调时登录.如果是,我认为请求是链接帐户.如果他们不是,我认为这是一个登录请求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读