前提
Rails 6.0.3.1
ruby 2.6.3
sorcery (0.15.0)
sorceryでtwitterログイン認証を実装していたのですが、エラーに四苦八苦していたので、特に苦しめられたエラーについて記録として残そうと思います。
ActiveSupport::MessageEncryptor::InvalidMessage
credentials.yml.encにtwitterのkeyと```sercret key
### 解決策
そもそも```credentials.yml.enc```なるものをきちんと理解していませんでした。
まずは、以下の記事を参照してみました。
[Rails5.2からsecrets.yml*が廃止されcredentials.yml.encに統合されるよ](https://qiita.com/daichirata/items/da40e205d273ae69fcfc)
読みところによると、Rails5.2.0になる前までは、```secrets.yml```とファイルにsercretsなあれこれを**平文**で記述していたみたいですね。
``暗号化済みのもの``が```credentials.yml.enc```では、記載されているようです。
改めて```credentials.yml.enc```中身を改めて確認してみると、意味不明な羅列がされていました。
確かに、暗号化されている所に、
twitterの```key```と```sercret key```を書いていくのは、おかしいなと思いました。
ってことで、上記の記事を参考に以下のコマンドで```credentials.yml.enc```ファイルを編集できることがわかりました。
```vim
EDITOR="vi" bin/rails credentials:edit
twitter:
key: keyの値
secret_key: sercret keyの値
上の記述を追加しました。
恥ずかしながら、Vimの使い方に慣れていないので、以下の記事を参照させていただきなんとか記述が完了致しました。
大変感謝です。
よく使う Vim のコマンドまとめ
undefined method `sorcery_adapter' for nil:NilClass
こちらは、凡ミスですが、ググっている時に全然参照記事がなくて、時間をくってしまいました。
エラーの原因としては、
.
.
.
config.user_config do |user|
.
.
.
# こちらの記述が抜けていました。
user.authentications_class = Authentication
.
.
.
sorceryのwikiにも記述があったのに、飛ばしていました。
今後きちんと、手順を参照したものを真っ先に確認したいと思います。
一応こちらも参照したので、載せておきます。
401 Authorization Required
こちらのエラーですが、Twitter認証が完了しリダイレクトする際に表示されました。
以下の記事を参考に、一通り試してみたのですがどれもうまくいかず。。
OAuth::Unauthorized 401 Unauthorizedなんてエラーがでたら
あまり記事がなかったのですが、たまたま以下の記事があったので目を通してみました。
Twitterログイン 401 Authorization Required
twitterデベロッパーツールのCallbacks URLsにhttp://127.0.0.1:3000/oauth/callbackを設定したのですが、いつ使うんだろう?と思っていました。
結論としては、localhost:3000にアクセスせず、http://127.0.0.1:3000/oauth/callbackにアクセスすることでエラーが解消されました。
最後に
外部API認証を初めて、行いますがrailsでの知らないファイルの存在やデベロッパーツールなるものにも触れることができ中々収穫ありでした。
またwikiをきちんと読んで、進める経験ができたのもよかったです。
Twitter認証を進める上wikiで、参考にさせていただいた記事
[【Rails】SorceryでTwitter認証]
(https://qiita.com/aiandrox/items/5435c8b285c7dc0c455f#%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88)
【Rails】Sorceryでfacebook認証 Sorceryの設定