- 看了网上的认证。发现好像没有保存用户????? 这个问题整么受得了。于是出现了下面的东西。欢迎大家拍砖,欢迎大家进QQ群 320834502(nopython)
- models.py-----------------------------------------------
- from django.contrib.auth.models import User
- class UserExtend(User):
- '''
- @des:注册邮箱验证程序
- '''
- email_code = models.CharField(max_length=60, blank=True, null=True, verbose_name=u"email验证码")
- rq = models.DateTimeField( auto_now_add=True,verbose_name=u"发送日期")
- sina_id = models.CharField(max_length=10, blank=True, null=True, verbose_name=u"SINA ID")
- qq_id = models.CharField(max_length=10, blank=True, null=True, verbose_name=u"QQ ID")
- is_shiming= models.BooleanField(default=False)
- weibologin.py-----------------------------------------------
- #-*- coding:utf-8 -*-
- from django.http import HttpResponseRedirect, HttpResponse
- from django.contrib.auth.models import UNUSABLE_PASSWORD
- from umanage.models import UserExtend
- from django.contrib.auth import authenticate, login
- from boneyao.weibo import APIClient
- APP_KEY = 'xxxxxxxxxx' # 换成你自己的
- APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxx' # 换成你自己的
- CALLBACK_URL = 'http://www.boneyao.com/umanage/weibo_callback.html'#填你自己的授权回调页面
- def jump_weibo_login(request):
- client = APIClient(APP_KEY, APP_SECRET, CALLBACK_URL)
- url = client.get_authorize_url(redirect_uri = CALLBACK_URL)
- return HttpResponseRedirect(url)
- def sina_id_to_user(uid):
- DEFAULT_EMAIL = ''
- username = 'SINA_%s'%uid
- if not UserExtend.objects.filter( sina_id = uid).exists():
- user = UserExtend.objects.create_user(username,
- DEFAULT_EMAIL, UNUSABLE_PASSWORD)
- user.sina_id = uid
- user.save()
- return user
- return UserExtend.objects.get(sina_id=uid)
- def weibo_callback(request):
- client = APIClient(APP_KEY, APP_SECRET, CALLBACK_URL)
- code = request.GET['code']
- r = client.request_access_token(code)
- user = sina_id_to_user(r.uid)
- user = authenticate(remote_user=user)
- login(request, user)
- request.session['oauth_token'] = r
- return HttpResponseRedirect('/')
- urls.py-----------------------
- urlpatterns = patterns('umanage.weibologin', url(r'^jump_weibo_login.html$', 'jump_weibo_login', name ="jump_weibo_login"), url(r'^weibo_callback.html$', 'weibo_callback'), )
- settings.py-------------
- AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend', 'django.contrib.auth.backends.RemoteUserBackend')
- #该片段来自于http://www.codesnippet.cn/detail/221020136578.html
来源: http://www.codesnippet.cn/detail/221020136578.html