python,Django實現(xiàn)的淘寶客登錄功能示例
更新時間:2019年06月12日 10:27:18 作者:輕舞肥羊
這篇文章主要介紹了python,Django實現(xiàn)的淘寶客登錄功能,結(jié)合實例形式分析了Django框架基于淘寶接口的登錄功能相關操作技巧,需要的朋友可以參考下
本文實例講述了python,Django實現(xiàn)的淘寶客登錄功能。分享給大家供大家參考,具體如下:
在整理python,django資料的時候,發(fā)現(xiàn)了這個東西,也許是當初某位網(wǎng)友或者朋友發(fā)過來參考或者一起探討修改的東西,現(xiàn)在不記得了,也許taobao的接口都變了也有可能,但總體來說還是有參考價值的,主要是做淘寶客客或者返利網(wǎng)會用到taobao登錄而用的.
參考代碼如下:
#!/usr/bin/python
#coding:utf-8
import datetime, urllib, base64, random
from hashlib import md5
from django.conf import settings
from django.contrib import auth
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render
from app.taobao.backends import TaobaoBackend
from app.taobao.models import User as taobao_user
from app.taobao.forms import UserOnceChange
from pyapi.taobao.top import Request
def authenticated(request, template):
if request.method == 'POST':
form = UserOnceChange(request=request, data=request.POST)
if form.is_valid():
request.user.username = form.cleaned_data['username']
password = form.cleaned_data.get('password', None)
if password:
request.user.set_password(form.cleaned_data)
request.user.save()
#更新應用用戶綁定
tb_user = request.user.taobao.all()[0]
tb_user.has_bind_user=True
tb_user.save()
return HttpResponseRedirect(reverse('user'))
top_session = request.GET.get('top_session', None)
top_parameters = request.GET.get('top_parameters', None)
top_sign = str(request.GET.get('top_sign', None))
#解析 top parameters
if top_parameters:
back_parameters = base64.decodestring(urllib.unquote(top_parameters))
infos = dict(k.split("=") for k in back_parameters.split("&"))
username = infos.get('visitor_nick', None)
visitor_id = infos.get("visitor_id", None)
# validate sign 認證返回值中的簽名
local_sign_str = '%s%s%s%s' % (settings.TAOBAO_APP_KEY,
top_parameters,
top_session,
settings.TAOBAO_APP_SECRET)
local_sign = base64.encodestring(md5(local_sign_str).digest())
#注意 base64 encode后,字符串最后會有 \n 符, 因此需要清除才能驗證
if top_sign == local_sign.strip(): # 清除 \n
# 創(chuàng)建/返回淘寶賬戶
tb_user, tb_user_created = taobao_user.objects.get_or_create(id=int(visitor_id),
nick=username)
#建立系統(tǒng)用戶, 用戶名存在則創(chuàng)建隨機數(shù)擴展
if tb_user.user_id is None:
try:
User.objects.get(username=username)
django_user_username = username
tb_user.has_bind_user = True
except:
django_user_username = '%s_%s' % (username, random.randint(1000, 10000))
django_user, django_user_created = User.objects.get_or_create(username=django_user_username)
if django_user_created:
django_user.set_password(visitor_id)
django_user.save()
tb_user.user = django_user
# 保存返回的信息:過期時間 token ts等
tb_user.expires_in = datetime.datetime.now() + datetime.timedelta(seconds=int(infos.get("expires_in", 0)))
tb_user.ts = infos.get("ts", '')
tb_user.refresh_token = infos.get("refresh_token", '')
tb_user.save()
# update user profile in taobao auth backend
user = auth.authenticate(id=tb_user.id, nick=tb_user.nick)
if user:
auth.login(request, user)
#如果應用賬戶沒有綁定系統(tǒng)用戶,則用戶第一次時可以修改用戶名
if not tb_user.has_bind_user:
form = UserOnceChange(request=request,
initial={'username':tb_user.user.username,
'password':tb_user.id})
return render(request, template, locals())
return HttpResponseRedirect(settings.TAOBAO_AUTH_URL)
希望本文所述對大家基于Django框架的Python程序設計有所幫助。
您可能感興趣的文章:
- 詳解Django框架中用戶的登錄和退出的實現(xiàn)
- 淺談django中的認證與登錄
- django的登錄注冊系統(tǒng)的示例代碼
- 在Django中限制已登錄用戶的訪問的方法
- Django自定義插件實現(xiàn)網(wǎng)站登錄驗證碼功能
- django用戶注冊、登錄、注銷和用戶擴展的示例
- Python中Django框架利用url來控制登錄的方法
- Django實戰(zhàn)之用戶認證(用戶登錄與注銷)
- Django中使用第三方登錄的示例代碼
- django用戶登錄和注銷的實現(xiàn)方法
- Django框架實現(xiàn)的普通登錄案例【使用POST方法】
- Django框架使用內(nèi)置方法實現(xiàn)登錄功能詳解
相關文章
python 快速把超大txt文件轉(zhuǎn)存為csv的實例
今天小編就為大家分享一篇python 快速把超大txt文件轉(zhuǎn)存為csv的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計
今天教各位小伙伴學習怎么用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計,文中有非常詳細的代碼示例,對正在學習python的小伙伴有很大的幫助,需要的朋友可以參考下2021-05-05

