[第十二只羊] 迷雾森林舞会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

天黑请闭眼


<<:  Day15-Overloading

>>:  Eloquent ORM - 读取资料

[DAY 09]Discord Bot回覆带入图片方法

今天分享如何把图片放进先前的翻译及拍卖查询功能 在universalis上每个物品都会有张图片 点击...

Day37 - Windows 提权(8)-提权手法统整 Password 密码相关

与 Password 密码相关的 Windows 提权手法 储存与注册表中的明文密码 储存於 pow...

Day24 Modules & Namespaces

今天要来介绍 Module,写 Module 的好处在於,可以把程序码分成不同档案来管理,会比较好维...

[DAY16]模板按钮

TemplateSendMessage - ButtonsTemplate buttons_temp...

番外篇(2)一起来做 To Do List!- 实作篇(1)

上一篇先介绍运用的知识点,这篇会着重在实作时的心路历程...不是啦,是怎麽把这个网页写出来的。先上成...