Django REST framework Vue 打造生鲜超市(十三)

时间:2019-05-11 09:40来源:计算机教程
目录 Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 生鲜超市(一)     生鲜超市(二)     生鲜超市(三)     线上演示地址: http://vueshop.mtianyan.cn/ github源代

目录

Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站

生鲜超市(一)    生鲜超市(二)    生鲜超市(三)   

线上演示地址: http://vueshop.mtianyan.cn/
github源代码地址: https://github.com/mtianyan/VueDjangoFrameWorkShop

生鲜超市(四)    生鲜超市(五)    生鲜超市(六)   

本小节: 第三方登录开发集成

生鲜超市(七)    生鲜超市(八)    生鲜超市(九)   

第三方登录开发模式以及Oauth2.0简介

我们要接入微博登录。我们的页面肯定 要跳转到微博登录页面。

都要跳转到对应平台的页面,涉及一个页面的回调。跟支付宝的支付模式有点像

vnsc5858威尼斯城官网 1

mark

理解第三方登录的流程:

  • 用户向本地应用商城发起请求,我要用微博进行登录。
  • 我们的商城凑一个url让用户跳转到第三方应用的url(微博的登录页面)
  • 用户在该界面点击输入用户名密码之后,点击授权。
  • 微博有个回调url指向我们的应用。
  • 我们的应用就可以获取到用户的基本信息等。

oauth2.0认证。

微信开放平台 & 微博开放平台 & qq开放平台

微信开放平台而不是微信公众平台

点击新建网页应用。上线之前必须审核才能让第三方用户登录

系统没开发完,没法审核。如何登录。测试模式。

vnsc5858威尼斯城官网 2

mark

vnsc5858威尼斯城官网,应用信息里的高级信息里面有回调地址(回调地址我们自己设置)

可以添加一些测试用户,也就是即使应用没上线,这些用户也是可以登录的。

vnsc5858威尼斯城官网 3

mark

高级信息里面的回调必须我们自己来设置。要在应用里面设置好。

app的这两个值比较重要。

App Key:
App Secret:

参考文档中的认证模式

http://open.weibo.com/wiki/授权机制说明

vnsc5858威尼斯城官网 4

mark

  • 我们的商城第一步会发起auth request。(resource owner)用户会向微博的服务器请求一个url(auth grant)

  • 进入微博登录的页面,在这里面输入用户名和密码。完成auth grant

  • 微博会向我们的商城服务器发一个url。会带一些参数,我们的会拿着去auth server进行请求。拿到access token基本已经完成用户授权

  • 后面的是获取用户的个人信息才会用到的;

接口文档。

这两个比较重要:

  • OAuth2/authorize 请求用户授权Token
  • OAuth2/access_token 获取授权过的Access Token

生鲜超市(十)    生鲜超市(十一)    生鲜超市(十二)    生鲜超市(十三)   

oauth2.0获取微博的access_token

http://open.weibo.com/wiki/Oauth2/authorize

这个接口是我们凑出一个url来提供给用户进行访问。

utils中新建一个weibo_login.py

http://open.weibo.com/wiki/Oauth2/authorize

vnsc5858威尼斯城官网 5

mark

http://115.159.122.64:8000/complete/weibo/?code=160ceb0ea32daba321c49b7eb30c1427

在我们的回调url后面会添加一个code。

http://open.weibo.com/wiki/Oauth2/access_token

这个api才是我们真正获取到登录令牌的api

我们要拿着这个code再请求一次,才能获取到我们的access_token

vnsc5858威尼斯城官网 6

mark

可以看到我们获取的access_token

http://open.weibo.com/wiki/2/users/show

我们试着拿着access_token获取用户基本信息。

vnsc5858威尼斯城官网 7

mark

可以看到可以成功获取到

# encoding: utf-8
__author__ = 'mtianyan'
__date__ = '2018/3/15 0015 14:46'


def get_auth_url():
    """
    client_id   必填  string  申请应用时分配的AppKey。
    redirect_uri    必填  string  授权回调地址,站外应用需与设置的回调地址一致。
    """
    weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
    redirect_uri = "http://remote_ip:8000/complete/weibo/"
    client_id = ""
    auth_url = weibo_auth_url "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,re_url=redirect_uri)

    print(auth_url)


def get_access_token(code):
    access_token_url = "https://api.weibo.com/oauth2/access_token"
    import requests
    re_dict = requests.post(access_token_url, data={
        "client_id": "",
        "client_secret": "",
        "grant_type": "authorization_code",
        "code": code,
        "redirect_uri": "http://remote_ip:8000/complete/weibo/",

    })
    pass

def get_user_info(access_token):
    user_url = "https://api.weibo.com/2/users/show.json"
    uid = ""
    get_url = user_url "?access_token={at}&uid={uid}".format(at=access_token,uid=uid)
    print(get_url)

if __name__ == "__main__":
    # get_auth_url()
    # get_access_token("")
    get_user_info("")

编辑:计算机教程 本文来源:Django REST framework Vue 打造生鲜超市(十三)

关键词: