request oauth认证

# coding=utf-8
__author__ = 'mac'

import requests

"""
Http Basic基本认证和oAuth 认证区别
"""

"""
基本认证:用用户名/密码来认证,但是它可以用base64码decode出明文的用户名密码信息,故不是特别安全
         客户端发送请求---》服务器端要求提供用户名/密码
         客户端 Post 用户名/密码----》服务器端接收到密码返回客户端所要请求的信息
"""

BASE_URL="https://api.github.com"

def construct_url(end_point):
    return '/'.join([BASE_URL,end_point])

def basic_auth():
    """
    基本认证:
    此返回的headers中的'Authorization': 'Basic am9saW5nY29tZTXXXXXXXXXX'可以通过base64返回明文的用户名密码
    python中:
    import base64
    base64.b64decode('am9saW5nY29tZTXXXXXXXXXX')

    """
    response=requests.get(construct_url('user'),auth=('jolingcome','Xxxxx'))
    print response.text
    print response.request.headers

# basic_auth()

def basic_oauth():
    """
    oauth:
    1.相当于codeware APP登陆时选择githup登录,App的跳转页面会将client_id,scope发送给githup
    2.App发post请求,获取access token, githup返回access_token
    3. APP 可以根据access_token获取想要的资源
    这样子在整个过程中都没有用户的相关信息暴露,access_token它是githup发放的。不是用户的用户名和密码生成的
    """

    """
    1.access_token可以用githup生成一个个人的token:https://github.com/settings/tokens
    2.将token拷下来:50a29391fad83cdb1a3770e3e3148d3306a3ssss
    3.下面操作只是流程的最后一步,已经获得token,可以得到该token权限下的相关内容
    """
    headers={'Authorization':'token 50a29391fad83cdb1a3770e3e3148d3306assss'}
    response=requests.get(construct_url('user/emails'),headers=headers)
    print response.text
    print response.request.headers
    print response.status_code
# basic_oauth()

#引用requests.auth库
from requests.auth import AuthBase
class GithubAuth(AuthBase):
    #后面要传入token
    def __init__(self,token):
        self.token=token
    #__call__括号运算符的重载,下面是相当于重写了headers的内容
    def __call__(self,r):
        #requests 加headers,并将headrs返回
        r.headers['Authorization']=' '.join(['token',self.token])
        return r

def basic_oauth_advance():
    """
    将header提出出来,后面写的时候就直接用basic_http一样调用

    """
    auth=GithubAuth('50a29391fad83cdb1a3770e3e3148d3306a3sss')
    response=requests.get(construct_url('user/emails'),auth=auth)
    print response.text

basic_oauth_advance()
 


# if __name__=="__main__":


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值