当混合omniauth和fbgraph gems时,我无法获得访问密钥

Tom*_*nes 5 facebook ruby-on-rails omniauth

我正在使用Rails 3.我在SessionsController中得到一个Rack :: OAuth2 :: Client :: Error当我尝试获取访问密钥时创建错误.我使用omniauth登录到facebook,我得到了param ["code"]现在我尝试使用fbgraph来获取访问代码,我得到了Rac :: OAuth2 :: Client :: Error.

  def create
    auth=request.env["omniauth.auth"]
    fb_auth=FbGraph::Auth.new("xxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxx")
    client=fb_auth.client
    client.redirect_uri="http://localhost:3000/facebook/callback/"
    client.authorization_code=params[:code]
    access_token = client.access_token!  # => Rack::OAuth2::AccessToken
    user=User.find_by_provider_and_uid(auth["provider"], auth["id"]) ||User.create_with_omniauth(auth, access_token)
    session[:user_id]=user.id

    redirect_to root_url, :notice => "Signed In!"
  end
Run Code Online (Sandbox Code Playgroud)

access_token!line是返回错误的原因.

chr*_*hke 1

如果您在fb_auth而不是客户端上设置redirect_uri,那么应该没问题,例如

fb_auth = FbGraph::Auth.new(
   "xxxxxxx",
   "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
   :redirect_uri = "http://localhost:3000/facebook/callback"
)
client=fb_auth.client
client.authorization_code=params[:code]
access_token = client.access_token!  # => Rack::OAuth2::AccessToken
Run Code Online (Sandbox Code Playgroud)

您还应该查看https://github.com/nov/fb_graph/issues/127#issuecomment-2244499,然后阅读 fb_graph_sample 代码并设置 FbGraph 调试。