大家。我正在我的平台(使用 Rails 和 Koala)上使用一个简单的 Facebook 身份验证系统,它几乎可以按预期工作。但是有一个关键的错误让我抓狂。
- 鉴于我没有登录我的平台,我没有注册,我还没有在我的 Facebook 个人资料上授权我的应用程序。
- 我去注册一个 Facebook 帐户
- Facebook 要求我登录
- 我成功登录
- Facebook 应用程序请求权限
- 我授权该应用程序
- 我被重定向到正确的 redirect_uri
client.get_access_token(params[:code])
考拉在这一步中失败了OAuthException: Code was invalid or expired. Session is invalid. This could be because the application was uninstalled after the session was created.
简而言之,Facebook 正在抱怨它刚刚提供的代码。以下是认证方法:
OAuth 的登录操作
def login
reset_session
session[:facebook_client] = get_client
redirect_to session[:facebook_client].url_for_oauth_code(:callback => FacebookAPI.oauth_callback_url, :permissions => "email, user_status, publish_stream, publish_actions")
rescue => err
end
回调动作
def terminate
client = session[:facebook_client]
if client.nil?
redirect_to '/', notice: 'Error on FacebookAPI'
else
access_token = client.get_access_token(params[:code]) if params[:code] # IT FAILS HERE
# omitting the rest
end