代码之家  ›  专栏  ›  技术社区  ›  mbillard

如何使用Facebook JavaScript SDK与魔法宝石

  •  0
  • mbillard  · 技术社区  · 13 年前

    我跟随 guide provided here by Sorcery 关于使用Facebook处理用户登录。

    # callback method called by Facebook after getting the authorization by the user
    if user = login_from(provider) # provider == "facebook"
      redirect_to root_path #, :notice => "Logged in from #{provider.titleize}!"
    else
      begin
        user = create_from(provider)
        ...
    

    然而,它只要求我的用户离开我的网站,转到Facebook页面,然后重定向到这里。

    我想实现的是我在使用Facebook JavaScript SDK时看到的,这是我页面上的一个干净的弹出窗口。为了实现这一点,我遵循了 tutorial on Railscasts 以下为:

    $('#sign_in').click (e) ->
      e.preventDefault()
      FB.login (response) ->
        window.location = '/auth/facebook/callback' if response.authResponse
    

    然而 authResponse 仅包含 accessToken 和 signedRequest 和 userid 而魔法需要 code 。

    是否有适当的方法(或 密码 使用 访问令牌 ?)。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    然而,authResponse只包含一个accessToken、一个signedRequest和一个userid,而Sorcery需要一个代码。

    是否有正确的方法(或者使用accessToken获取代码?)。

    在服务器端流中 code 只是一个 中间的 介入 得到 访问令牌应用程序获取代码,并且 交易所 访问令牌的代码。

    因为在客户端流中您已经 收到 一个访问令牌,当它完成时,它不会得到比这更合适的东西。

    因此,您有两种选择:

    • 要么重构你的魔法,这样它就跳过了获得代码并将其交换为访问令牌的步骤,然后在获得访问令牌后直接自己设置访问令牌(魔法可能希望设置的位置);或

    • 坚持服务器端流程,但在弹出窗口中自己打开它。然后你仍然会得到代码,但你会在弹出窗口中得到它。因此,你必须关闭弹出窗口,然后可能自己重新加载原始窗口。