Edited at

mauticとrailsを連携するときにOAuth2認証でハマった

More than 1 year has passed since last update.


前提

mautic、railsってそもそも何なの?って説明は省きます。


この記事を書いたきっかけ

RailsのサイトにMauticを導入する方法

公式、先駆者の記事を見て構築すればmauticとrailsをすんなり連携できるのですが

認証周りでハマってしまいかなり時間を無駄にしてしまったためメモとして残します。


スクリプト作成

rails側のUserとmauticのcontactでemailが一致するデータに対して名前を更新するスクリプトを作成


rails→mautic連携するスクリプト


task_name.rb

namespace :task_name do

desc "実行処理の説明"
task :create, ['name'] => :environment do |task, args|
conn = Mautic::Connection.last
# emailが一致しているデータをMauticへ連携する(実際の業務ではDBから取得した値を使うでしょう)
contact = conn.contacts.where(search: "email: dummy@dummy.co.jp").first

# ユーザ情報を格納する
contact.firstname = "ほげ"
contact.lastname = "ほげお"

# ユーザ情報をMauticに保存する
if contact.save then
Rails.logger.info('success')
else
Rails.logger.error("error: #{contact.errors}")
end
end
end



実行してみた

なんかエラー出た・・・

$ rake task_name:create

rake aborted!
A refresh_token is not available
/Users/hoge/projects/rails/lib/tasks/task_name.rake:14:in `block (2 levels) in <main>'
Tasks: TOP => task_name:create
(See full trace by running task with --trace)


A refresh_token is not available


リフレッシュトークンが設定されてませんですよと:sob:

何か手順抜けたのか・・・

うーん、とりあえずgemの中身みたり、公式のドキュメント読んでみるしかないか:point_up:


色々調べてみた

mauticのgemやOauth2のgemのソースを読んでみたが

公式のPHPのアプリケーションでのHow toを読んで何が足りてないのか理解できた

How to Use the Mautic Rest API

かなりざっくり言うと先にtokenを発行しておいてとのこと:raised_hand:


解決方法

http://localhost:3000/mautic/connections/1/authorizeにアクセス

rails側のmautic_connectionsが更新され、tokenrefresh_tokenが発行できた:v:

   (0.1ms)  begin transaction

↳ /Users/hoge/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
Mautic::Connections::Oauth2 Update (0.4ms) UPDATE "mautic_connections" SET "token" = ?, "refresh_token" = ?, "updated_at" = ? WHERE "mautic_connections"."id" = ? [["token", "hoge_token"], ["refresh_token", "hoge_refresh_token"], ["updated_at", "2018-07-07 16:23:32.467550"], ["id", 1]]
↳ /Users/hoge/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
(3.0ms) commit transaction

スクリーンショット 2018-07-08 1.30.37.png


参考サイト