iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Software Development

透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計系列 第 12

[第十二隻羊] 迷霧森林舞會V twitter + devise登入

天亮了 昨晚是平安夜

關於迷霧森林故事

確認身份別恍神

8號:先評論一下午5號,感覺蠻好的整個人蠻放鬆的感覺,給我感覺蠻好的,然後只點評了6好凝重7看不出來
但我覺得6比較問號的點是他說5號怎麼只講6跟7,但他自己也沒點評別人XD,所以我覺得6號有點小問號先擺在問號區,沒有要踩你的意思,7號的話我真的覺得給5號一樣蠻難看出7是什麼,因為他就是不知道怎麼講,跳預言家..但講的沒有很順,如果他就是真的是查4那怎麼辦?或者是他是狼被派悍跳之類,所以我沒有完全信到7,講話比較遲鈍一點,所以要看一下後面預言家跳得力度怎樣,如果更差就會信7,目前沒有很信的過7,6號放問號區,9號剛剛嘟著嘴我也想知道原因,7號就是一半一半,過了

9號:7號你還真的衰呢,因為我才是真預言家唷,7號剛剛跳得太停頓了,我查驗的是1號,1號是金水,我覺得1 6 7 三張牌都非常的尷尬,因為6號牌原本臉部表情是大漲紅很奇怪,但是因為6 7以前都比較早出局所以我就先
驗1,1金水,剛剛6的發言很不好耶,你說5蠻好的,然後因為1是金水所以我就再找
另外兩個狼坑,2感覺有一點卦象,所以我現在狼坑2 6 7 ,那因為剛剛7號悍跳狼王,我覺得7高機率狼王,然後他點了3跟9,但是我不採他們唷,你不踩我那你就下去哈哈,他查的是4號金水,我可能得聽一下他的發言,這金水我可能也吞不進去,半吞,我可能覺得7號他包了3 9 可能是兩個好人,以他的玩法可能高機率把兩個好人點出來,1是金水鐵好,3高機率好人,然後5我也覺得蠻好的,那8號牌如果等一下上票票7那就是打一個倒鉤請去把他殺掉。8號就是演那種我不知道我不知道但是投一個超歪的,所以8號用票型來看他是不是倒鉤,我這局想出6女巫毒7,但是六的表情我想一下,因為這個板子惡靈騎士不太可能來悍跳,7要嘛狼王要嘛小狼,我覺得高機率狼王,那要不要給女巫毒呢?恩..因為我太前面了沒辦法分出票型,那可以出7,7可能就會帶我,目前狼坑6 7,2單純聊天過程表情凝重可能要再聽一下
4號金水半吞,2 4著重聽,過了
待續..

動物園派對

Twitter審核速度好快
24小時內就回覆確認
那我們就繼續完成登入

$ rails g devise User

會幫我們生成下面這一段

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    create_table(:users) do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at


      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end

但是因為我們已經有user email欄位,所以將下面這段先刪掉
t.string :email, null: false, default: ""
並補上一個migration 把這段email預設值補成空值並新增Twitter需要的欄位

$ rails g migration AddDefaultEmailValueToUser
$ rails g migration AddColumnsToUsers
class AddDefaultEmailValueToUser < ActiveRecord::Migration[6.1]
  def change
    remove_column :users, :email
    add_column :users, :email, :string, null: false, default: ""
  end
end

class AddColumnsToUsers < ActiveRecord::Migration[6.1]
  def change
    add_column :users, :provider, :string
    add_column :users, :uid, :string
    add_column :users, :user_name, :string
    add_column :users, :avatar_url, :string
  end
end

合併資料庫新欄位

$ bundle exec rake db:migrate

確認一下 model 裡面都有引入對應的devise 並加入 :omniauthable 社群帳號登入

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :omniauthable
end

接下來我們在twitter加入新的project,記得還要在project下面新建一個新的app
https://ithelp.ithome.com.tw/upload/images/20210927/20131155p93nM4lzLX.png

再來我們把得到的 api_key 與 secret 存到 Rials 6 中的credentials
先用command line開啟 credentials並按ESC後按 :wq!存擋

$ EDITOR=vim rails credentials:edit
安安 我是在vim中用查看credentials file

twitter:
  twitter_api_key: '你的api_key'
  twitter_api_secret: '你的secret'

最後我們在到devise設定檔去設定

/config/initializers/devise.rb

  config.omniauth :twitter,
                  Rails.application.credentials.twitter[:twitter_api_key],
                  Rails.application.credentials.twitter[:twitter_api_secret]

接下來我們整合devise提供的 omniauth

$ rails g controller users/omniauth_callbacks

更換route,換成可以對應 omniauth_callbacks
devise_for :users

/app/routes.rb

devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }

最後在前端application.html.erb加上登入判斷

/app/views/layouts/application.html.erb

<% if user_signed_in? %>
  <%= link_to 'logout', destroy_user_session_path, method: :delete %>
<% else %>
  <%= link_to 'Twitter login', user_omniauth_authorize_path(:twitter) %>
<% end %>

就可以完成twitter登入囉

參考資料

  1. 認証機能(Devise)

阿虎每日選幣

CHZ守 $0.2377

天黑請閉眼


上一篇
[第十一隻羊] 迷霧森林舞會IV 登入系統
下一篇
[第十三隻羊] 迷霧森林舞會VI devise登入
系列文
透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計30

尚未有邦友留言

立即登入留言