对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上释放。
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上释放。