みんな。私は自分のプラットフォーム (Rails と Koala を使用) で単純な Facebook 認証システムを使用していますが、ほぼ期待どおりに動作しています。しかし、私を狂わせる重大なバグが 1 つあります。
- 私は自分のプラットフォームにログインしておらず、登録もしておらず、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