内容简介:整理一下之前的 Slack 整合笔记。接 Slack 还是有挺多坑的。这篇主要写登入整合。整合 slack 主要靠三个 gem把 devise 先跑起来,然后 view 也下载下来
整理一下之前的 Slack 整合笔记。接 Slack 还是有挺多坑的。这篇主要写登入整合。
整合 slack 主要靠三个 gem devise
, omniauth
, omniauth-slack
。
安装 devise
- bundle install devise
- rails g devise:install
- rails g devise user
- rails g devise:views
把 devise 先跑起来,然后 view 也下载下来
安装 omniauth
- bundle install omniauth
- user model 挂上 omniauthable
安装 omniauth-slack
- bundle install omniauh-slack
-
先去 https://api.slack.com/apps
申请 API KEY。里面只有两个会用到:
- Client ID
- Client Secret
- 设定权限。记得要特别设 identity.email 才拿得到 email
config/initiailizers/devise.rb
config.omniauth :slack, ENV['SLACK_APP_ID'], ENV['SLACK_APP_SECRET'], scope: 'identity.basic,identity.email' # 用 identity.email 能拿到 email config.omniauth :slack, ENV['SLACK_APP_ID'], ENV['SLACK_APP_SECRET'], scope: 'team:read,users:read'
设定 callbacks 网址
记得要设 callbacks
Rails App 怎么接进来的资料
-
做 Authorization model:
rails g model authorization provider:string uid:string user_id_integer
-
exetend 一个 OmniauthCallbacks https://gist.github.com/xdite/a8a69233526c6af5c3210d101534e565
-
生一个
app/controllers/users/omniauth_callbacks_controller.rb
https://gist.github.com/xdite/80391cf4c5258652666c3dfaaa595ca0 -
改
config/routes.rb
config/routes.rb
Rails.application.routes.draw do devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks"} end
-
User
has_many :team_users
,has_many :teams, :through => :team_users
讲解细节
- devise 与 omniauth-slack 生成的认证连结会是 https://localhost:3000/users/auth/slackcallback 。 也会从这里回来。
-
另外造一个
users/omniauth_callbacks
的 controller 来收 callback -
做一个 User.find_or_create_for_slack 去解析
request.env["omniauth.auth"]
收进来的资料 - 收进来的资料格式,omniauth-slack 这里有整理一份 https://github.com/kmrshntr/omniauth-slack
- 不过还是要一直开著 Rails.logger.warn 去看一下打进来的资料。因为 scope 不对,会拿不到关键信息。
- scope 列表在这: https://api.slack.com/docs/oauth-scopes
- 主要有用的是 identity.basic,identity.email, team:read, users:read
- authorization 记的表主要是 provider 与 slack 给的 uid
几个坑
-
网上范例只给
identity.basic
,这是拿不到东西的。而且 slack 对拿 email 很严。搞了一晚上才确定identity.email
才拿得到 email,非常蛋疼。 - Rails 改版了,现在要从 request.env 才拿得到资料
- slack 回传资料非常巢状,数错层就拉不到资料。有些资料要反覆调试 scope 才拿得到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Rails 与 Slack 整合指南 (4)
- Rails 与 Slack 整合指南 (3)
- Rails 与 Slack 整合指南 (2)
- React Native 项目整合 CodePush 完全指南
- SpringBoot整合MybatisPlus的简单教程(简单整合)
- springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Writing Windows VxDs and Device Drivers, Second Edition
Karen Hazzah / CMP / 1996-01-12 / USD 54.95
Software developer and author Karen Hazzah expands her original treatise on device drivers in the second edition of "Writing Windows VxDs and Device Drivers." The book and companion disk include the a......一起来看看 《Writing Windows VxDs and Device Drivers, Second Edition》 这本书的介绍吧!