对auth0 python包的非正式增强

auth0plus的Python项目详细描述


=========
auth0+python
==========






图片::https://img.shields.io/pypi/v/auth0plus.svg
:目标:https://pypi.python.org/pypi/auth0plus

…图片::https://img.shields.io/travis/bretth/auth0plus.svg
:目标:https://travis ci.org/bretth/auth0plus

…图片::https://covertalls.io/repos/github/bretth/auth0plus/badge.svg?branch=master:目标:https://coveralls.io/github/bretth/auth0plus?branch=master



auth0管理api v2的非官方python接口,可加速python项目中的集成。

*免费软件:isc许可证




auth0plus

用法
----


我们将开始使用最简单的场景,即使用auth0存储要进行身份验证的用户数据库。为此,您需要配置域和非交互式客户端以访问连接(数据库)。您还需要一个json web令牌(jwt),以便客户端应用程序访问您指定的api的各个部分(作用域)。这可以手动生成,也可以如我在这里所示,通过对OAuth/令牌终结点的单独调用,每隔24小时以编程方式授予它:

-登录auth0.com
-转到"clients"菜单<;https://manage.auth0.com//clients>;`
-创建客户端并单击其设置以获取*域**客户端ID*和*客户端机密*
-转到"API"菜单lt;https://manage.auth0.com//api>;``并单击*auth0 management api*
-单击*非交互式客户端*并授权您的客户端,然后将选择扩展到选择作用域。
-选择读取:用户,更新:用户,删除:用户,创建:用户,读取:用户应用程序元数据,更新:用户应用程序元数据,删除:用户应用程序元数据,创建:用户应用程序元数据,创建:用户应用程序元数据,创建:用户应用程序票证,然后*更新*

有关上述过程的详细信息,请阅读`<;https://auth0.com/docs/api/management/v2/tokens>;` `.


在代码中导入auth0类。

>;>;从auth0plus.management导入auth0
>;>;从auth0plus.oauth导入get_token

此示例doctest使用python dotenv保存机密和.env文件中的变量。您可以使用**make doctests**.

>;>import os
>;>from dotenv import load dotenv
>;>load dotenv('.env')
true
>;>domain=os.getenv('domain')
>;>client_id=os.getenv('client_id')
>;>client_secret=os.getenv('client_secret')
>;>db=os.getenv('connection')


获取通常存储在某处的24小时JWT令牌字典::

>;>token=get_令牌(域,client_id,client_secret)

创建延迟连接。我们将连接到数据库支持的存储。

>;>auth0=auth0(域,令牌['access_token',client_id=client_id,default_connection=db)

因此/api/v2/user s的端点将是*auth0.users*,要获得空的用户实例,您可以调用构造函数。

>;>user=auth0.users()

使用endpoint*create*方法一步完成。

>;>angus=auth0.users.create(email='angus.young@acdc.com',email\u verified=true,
…password='越狱',user_metadata={'family_name':'young'})


2。使用遵循django等效方法的convenience*get廑u或廑create*方法。

>;>malcolm,created=auth0.users.get廑u或廑create(
…默认值={'email_verified':true,'password':'chuck',
…'用户元数据:{家庭名称:'young'},电子邮件='malcolm.young@acdc.com')
>;>malcolm.user_metadata
{'family_name':'young'}
>;>malcolm.picture
'https://s.gravatar.com/avatar/…'

>3.使用init和*save*.

>;>singer=auth0.users(email='dave.evans@acdc.com',email\u verified=true,
…password='canisitnexttoyougirl')
>;>singer.save()
>;>print(singer.user_id)
auth0…


*save*也会更新用户(可能需要多次调用端点)。

>;singer.email='bon.scott@acdc.com'
>;>>;singer.password='highwaytohell'
>;>singer.save()


file"/library/frameworks/python.framework/versions/3.5/lib/python3.5/doctest.py",第1320行,在运行compileflags时
1),test.globs)
file"<;doctest readme.rst[21]>;",第1行,在模块中<;gt;
singer.password
文件"../auth0plus/auth0plus/management/users.py",第118行,在password
raise attributeerror("user"对象没有新密码")
attributeerror:"user"对象没有新密码

以区分在本地创建的用户实例和从auth0获取的用户实例布尔属性*fetched*确定保存记录是update(*true*)还是create(*false*)。

…brian=auth0.users.get(电子邮件='brian.johnson@acdc.com')
…除了auth0.users.doesnotexist as err:
…打印(错误)
用户不存在默认值={'email_verified':true,'password':'backinblack'},
…email='brian.johnson@acdc.com')



*get*方法使用auth0 lucene搜索,这意味着除了id之外,您可能会得到多个结果(以及*multipleobjectsreturned*异常)。但请注意,您还需要确保为新创建的用户提供足够的索引时间。

>;>;来自auth0plus。异常导入多个对象返回
>;>;导入时间
>;>;时间。睡眠(5)
>;>;尝试:
…singers=auth0.users.get(电子邮件='b*')
…除了多个对象返回为错误:
…print(err)
user.get返回多个用户

当您实际需要多个结果时,请使用返回可切片惰性对象的*query*或*all*。

>;>;singers=auth0.users.query(email='b*')
>;>;singers.count()include总计返回的总数=true,无需迭代
2
>;>;singers[:]评估整个查询
[<;user auth0…>;,<;user auth0…>;]

您还可以构造自己的"q"语法,而不是关键字参数,并传递其他端点参数。在这种情况下,我们将只获取用户ID和电子邮件。
::
>;>brothers=auth0.users.query(
…q='user_metadata.family_name:"young"',
…fields='用户id,电子邮件')
>;>>brothers.count()
2


如果要对返回的用户数据执行操作,则*as_dict*是您的朋友。

>;serialized=brothers[0].as_dict()

>>>>new_angus=auth0.users(**serialized)
>>>>new_angus.password='moneytrain'
>>>>>>来自auth0plus。异常导入auth0error
>>>尝试:
…新的_angus.save()
…除了auth0error as err:
…print(err)
400:用户已存在。

对不起,安格斯,该退休了。

>;>;band=auth0.users.all()
>;>;band.count()
2
>;>;对于带内成员:
…member.delete()



credits
--



此包是使用Cookiecutter和"Audreyr/Cookiecutter Pypackage"项目模板创建的。


。_ Cookiecutter:https://github.com/audreyr/Cookiecutter
。_` audreyr/cookiecutter pypackage`:https://github.com/audreyr/cookiecutter pypackage



=
=
history
==



<0.3.0(2017年5月9日)
----

*添加get-u令牌函数以使用新的临时客户端令牌

>0.2.4(2016年6月20日)
----

*用酸洗解决问题
*用共享嵌套字典解决问题


0.2.3(2016年5月10日)
----


*Unicode也一样

>0.2.2(2016年5月10日)
----


*安装工具总能抓住我out

0.2.1(2016年5月5日)
----


*使用get和save flow解决问题


0.2.0(2016年5月4日)
----


*包作为轮子
*从auth0plus导入auth0。管理

0.1.0(2016年5月1日)
----


*首先在PYPI上释放。

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

推荐PyPI第三方库


热门话题
java如何将HashMap<String,Object>从一个活动传递到另一个活动   java如何手动加密socket连接的流量?   java正则表达式生成一个不正确的结果   Java方法引用具有泛型参数的方法   java app setBackground()错误:不兼容的类型:int无法转换为Drawable   java是启动Spring引导而不是SpringApplication的其他方法。跑   无法打开java类路径资源[org/quartz/impl/jdbcjobstore/tables_h2.sql],因为它不存在   spring使用Java,如何确定来自tomcat Web服务器的出站服务调用?   java获取多个同名的XML元素JAXB   java使用Ant从同一代码库构建Swing和Android应用程序   JComponent的java重绘方法不起作用   java目标不可访问,标识符“beanName”解析为null   smtp是否有支持esmtp管道的java api?   java如何在Spring中自动连接业务对象   java在Hibernate中没有其他保存实体的方法吗?   针对两个客户机的SpringJavaWeb应用程序项目开发   使用split的java标记化输入