酒と京都(現在Vancouver)と男とRuby

#Vancouver #バンクーバー #プログラミング #Ruby #Rails #Webアプリケーション #京都

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でのログインの口作れたしやはり良し。