内容简介:整理一下之前的 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整合开发)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。