Project

ssk_line

0.0
No commit activity in last 3 years
No release in over 3 years
This gem is for seishinkai line
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0
>= 0
 Project Readme

ssk_line

このGemはRuby on RailsでLineログインを簡単にするためのものです。 Lineでログインしてもらい、登録してもらった人に何かを教える、というニッチな商売に最適化しているため、テーブルの構造まで踏み込んでおります。 その分、そのルールに沿っている以上、実装が楽です。

環境変数の設定

環境変数に以下の内容を設定しておく。

  • LINEAPI_CHANNEL_ID
  • LINEAPI_CALLBACK_URL
  • LINEAPI_CHANNEL_SECRET

これらの仔細はLINE Login APIのコンソール画面から情報を取得できる。

ユーザーテーブルの作成

テーブル名(モデル名)は何でも良いです。 その代わり、下記のカラムが必要になります。

  • :teacher => boolean(trueの場合は講師アカウントとみなす)
  • :admin => boolean(trueの場合は管理者アカウントとみなす)
  • :lineid => string(lineのidが入る)
  • :dname => string(lineの表示名が入る)
  • :picture =>string(lineの画像URLが入る)

Railsでの使用について

Gemfileに
gem 'ssk_line'
を書いておいてbundle installするのは前提として、

実際に使うのは2つのメソッドだけです。

SskLine.login_url(request)

引数としてrequestを入れておきます。そのまま書けば、OKです
<%= link_to 'lineでログイン' ,SskLine.login_url(request) %>
という感じです。
ログイン用のURLを取得するだけでなく、セッションにCSRFトークンも入れておきます。

SskLine.line_login_process(request,controller,user_model_class)

リダイレクト先のアクションで使います。 コントローラー内で使うと思いますので、 SskLine.line_login_process(request,self,User)
というような書き方になるかと思います。

中で何をやっているかというと、

  • 環境変数などちゃんと設定されているかの確認
  • CSRFトークンのチェック
  • トークンが合っていればアクセストークンの取得
  • アクセストークンが取得できたらプロフィールの取得
  • そのプロフィールのlineidがすでにusersテーブルに存在すれば表示名と画像のURLを上書き
  • そのプロフィールのlineidが存在しなければ新しく作成。
  • 新規作成する際に一人目のユーザーであれば強制的に管理者権限にする という感じです。

1個でもエラーがあればroot_pathに強制的に飛ばします。そのため
if SskLine.line_login_process(request,self,User) == false then return end
こんな1行を入れておけば良いです。