处理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)(默认情况下启用)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajpa查询。getResultList()?   java使用javascript呈现的2个列表   使用gson库从Java属性文件解析Json   java Repeate数组何时到达最后一个文本?   java如何将应用程序锁定到环境中   如何使用JAXRS在REST中将Javascript日期传递给Java LocalDate和LocalDateTime   java学生数组菜单   跨多个节点自动分片Java映射   java是否可以仅使用lambda表达式将字符串转换为int[]?   java等价性和内存空间   java自定义ListView设计与水平CardView   java在安卓中显示空白活动   java Android应用程序错误很遗憾,你的应用程序已停止   java Kerberos错误:GSSHeader未找到正确的标记   调试/优化java应用程序   java文档<小程序名称>。isAlive()在某些浏览器中失败   爪哇岛。不解析CtExecutableReference类型和声明的类型,具体取决于环境(Docker和本地Spring引导)   java如何检查Parcelable是否为NULL