oauth2对python请求http库的支持。

requests-oauth2的Python项目详细描述


#请求-OAuth2

[![pypi](https://img.shields.io/pypi/v/requests-oauth2.svg)(https://pypi.python.org/pypi/requests-oauth2)


oauth v2.0支持
[kennethreitz](https://github.com/kennethreitz)众所周知的
[请求](https://github.com/kennethreitz/requests)库。

提供在python中执行
oauth2的最简单和最简单的方法。oauth2比旧的oauth1.0要容易得多,而且
同样,这个库也很简单,没有任何问题,并且在
日常使用中很实用。如果您正在寻找实现OAuth 1.0的方法,请参见
[请求OAuth](https://github.com/maraujop/requests oauth)。



许可证:BSD

>示例:使用[flask](/examples/web-flask.py)。

如果你知道OAuth2是如何工作的话。您的web应用程序(*foo*)允许用户使用其*qux*
帐户登录。*qux*这是一个服务提供商;他们给了你一个**客户端
id**和一个**密钥**,foo*存储在
后端的某个地方。*qux*和*foo*预先商定了一些**重定向uri**。
2。用户访问*foo*的登录屏幕,例如
`https://www.foo.example/login`
3。*foo*将用户重定向到*qux*的**授权url**,例如
`https://api.qux.example/oauth/authorize`
4。用户将看到*qux*的**同意屏幕**,在该屏幕上,他们
查看请求权限的**范围**,并允许或
拒绝访问。
5。一旦授予访问权,*qux*将通过他们事先约定的
**重定向uri**重定向回*foo*,提供
**代码**。
6。*foo*将**代码**交换为**访问令牌**。access
令牌可以由*foo*代表用户对*qux*进行api调用。


容易。在本例中,我们将开始使用google。

r/>`` python
来自请求的请求。服务导入google client
google auth=googleclient(
client id="您的google client id",
client secret="super secret",
当用户访问日志时重定向uri="http://localhost:5000/google/oauth2callback",

```

在页面(第2点)中,我们将构建一个
**授权URL**(第3点),它将引导用户进入Google的
**同意屏幕**,请求授予指定的**作用域**(第4点):

``python
``authorization=google\.authorization\.url(
scope=["email"],
response_ type="code",

```


一旦用户单击"允许",google将把它们重定向到
**重定向uri**(第5点),其中包括**code**,作为查询字符串参数之一:


http://localhost:5000/google/oauth2callback?代码=…

该代码将用于请求**访问令牌**(第6点),
对API的所有以下请求都是必需的:

`` python
code=get_request_parameter("code");这取决于您的Web框架!
data=google_auth.get_token(
code=code,
grant_type="authorization_code",

`````

您可以将其存储在某个地方以备以后使用,例如在会话中或在数据库中:

``python
会话["access_token"]=data["access_token"]
``


提供**访问令牌**的CT方法因提供者而异。一种流行的方法(google支持)是通过
承载头。这里有一个助手快捷方式:

`` python
from requests\u oauth2 importOAuth2BearToken

with requests.session()as s:
s.auth=OAuth2BearToken(访问令牌)
r=s.get("https://www.googleapis.com/plus/v1/people/me")
r.raise for"状态"
data=r.json()
``````

Facebook等其他提供商允许访问令牌作为请求参数传递(在查询字符串中)。你可以这样做:


``python
from requests\u oauth2 import oauth2bearertoken

with requests.session()as s:
s.params={"access\u token":response["access\u token"]}
r=s.get("https://graph.facebook.com/me")
r.raise for\u status()
data=r.json()
```

bserver>;

*oauth 2.0在facebook中:
<;http://developers.facebook.com/docs/authentication/>;

*github oauth 2.0用法:
<;https://developer.github.com/apps/building oauth apps/>;

*您可以使用postbin测试webhook:<;http://www.postbin.org/>;

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

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息