处理oauth并存储slack令牌
django-slack-oauth的Python项目详细描述
\django slack oauth[![构建状态](https://travis-ci.org/izdi/django-slack-oauth.svg?branch=master)(https://travis ci.org/izdi/django slack oauth)
_secret`在[创建新的松弛应用程序](https://api.slack.com/applications)时可以找到它。
使用pip安装:
```
$pip安装django slack oauth
```
2。在"settings.py"中将"django-slack-oauth"添加到"installed-apps"中:
``python
`installed-apps=(
…
'django-slack-oauth',
)
```
3。运行初始迁移:
```
$python manage.py migrate
```
4。将slack oauth基url添加到项目的"url.py"中:
``python
urlpatterns=[
…
url(r'^slack/',include('django_slack_oauth.url'),
…
]
```
5。在"settings.py"中指定松弛凭据和OAuth作用域:
``python
slack_client_id=os.environ.get('slack_client_id')
slack_client_secret=os.environ.get('slack_client_secret')
slack_scope='admin,bot'
````
作用域应该是,请阅读有关[slack oauth scopes]的更多信息(https://api.slack.com/docs/oauth scopes)。
被重定向到oauth进程的slack。如果成功,将重定向到显示成功消息的视图。您可以通过在"settings.py"中设置"slack_success_redirect_url"来更改此视图。
OAuth身份验证成功。有些用例可能是:
-为用户注册帐户
-捕获验证后slack返回的api数据(默认行为)
-在验证后向用户的slack团队发送slack消息
它们只是按顺序调用的函数列表。它们必须接受并返回两个参数:"request"和"api_data",分别包含初始请求和返回的api数据。
pipelines定义为"settings.py"中的可调用列表:
``python
slack_pipelines=[
'path.to.function1',
'path.to.f函数2,
…
]
```
-**示例1:*显示从OAuth请求返回的数据
*settings.py*
```python
…
松弛管道=[
'我的应用程序管道。调试OAuth请求',
]
``````
*我的应用程序/管道lines.py*
`` python
定义调试请求(请求,api数据):
打印(api数据)
返回请求,api数据
````
-**示例2:*注册用户并发送电子邮件
*设置.py*
``python
…
slackelines=[
'我的应用程序管道.注册用户',
'我的应用程序管道.发送电子邮件',
]
````
*我的应用程序/管道.py*
``python
``python
从django.contrib.auth.models导入用户
r/>
def register_user(request,api_data):
如果api_data['ok']:
user,created=user.objects.get_or_create(
username=api_data['team_id']+':'+api_data['user_id']
)
如果user.is_active:
slacker,u=slackuser.objects.get_或_create(slacker=user)
slacker.access_token=api_data.pop('access_token')
slacker.extras=api_data
slacker.save()
如果创建:
request.c创建的用户=用户
return request,api_data
def notify(request,api_data):
if hasatt(request,created_user'):
notify_admins("已创建ID为{}的新用户。".format(request,created_user))
notify_user(request,created_user)
return request,api_dataa
````
n感谢《丹尼尔•范飞门》(https://github.com/dvf)
////////////
/>
````````````````````
```````````
`````````````
a非统组织(oauth/authori权)'
````````````````````````````````COM/A公司pi/oauth.access'
```
此状态存储在会话中,这要求启用[会话中间件](https://docs.djangoproject.com/en/2.1/topics/http/sessions/enabling sessions)(默认情况下启用)。