RailsでTwitterログインの設定でのエラー
今ここで止まった↓
6-3. OAuth を利用して「Titter でログイン」機能を作る
(パーフェクトRuby-on-Rails)
書籍とおりにsecrets.ymlを設定していたのだけれど、
OAuth::Unauthorized - 401 Authorization Required:
でエラーになったときの対処について、
同様のエラーをネットで探すと
・TwitterAPIのID/パスワードの誤記
・callbackの設定が空白
・ローカルの時刻がずれている
などあげられていたけれど、どれも確認、しかし治らず。
上記書籍ではTwitterで認証だけ書いてあったので、じゃあFacebookではどうだろうかと思い、同様にFacebook Devで登録するとこちらではうまく行った。
このときAPIのID/パスワードをsecrets.ymlに書かず、omniauth.rbに直書きして試していたので問題の箇所をsecrets.ymlに仮定。なるほどTwitterの方もomniauth.rbに直書きすればうまく行くようになった。
before:
default_twitter: &default_twitter
twitter_api_key: "xxxxxxxxxxxxxxx"
twitter_api_secret: "xxxxxxxxxxxxxxx"
facebook_api_key: "xxxxxxxxxxxxxxx"
facebook_api_secret: "xxxxxxxxxxxxxxx"development:
secret_key_base: xxxxxxxxxxxxxxx
after:
default_twitter: &default_twitter
development:
secret_key_base: xxxxxxxxxxxxxxx
twitter_api_key: "xxxxxxxxxxxxxxx"
twitter_api_secret: "xxxxxxxxxxxxxxx"
facebook_api_key: "xxxxxxxxxxxxxxx"
facebook_api_secret: "xxxxxxxxxxxxxxx"
というように、development:にnestするとうまく行くようになった。でもこれってあとtest:にproduction:に適用していったら冗長だよねって、、、
ところでやっと気がついた。
最初のときのエラーの原因はdefault_twitter: &default_twitterにID/パスワードがnestされていないのが原因ってことを。
うん、書き綴るって大事、書かなきゃ気づかなかった。
うん、最低限ymlの表記法を調べようねってことね。
結果良し。
しかし、今日これに何時間かけたのか、、、facebookでのログインの口作れたしやはり良し。