django 微博链接登陆,django微博链接,看了网上的认证。发现好像
文章由Byrx.net分享于2019-03-23 09:03:54
django 微博链接登陆,django微博链接,看了网上的认证。发现好像
看了网上的认证。发现好像没有保存用户????? 这个问题整么受得了。于是出现了下面的东西。欢迎大家拍砖,欢迎大家进QQ群 320834502(nopython)models.py-----------------------------------------------from django.contrib.auth.models import Userclass 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, HttpResponsefrom django.contrib.auth.models import UNUSABLE_PASSWORDfrom umanage.models import UserExtendfrom django.contrib.auth import authenticate, login from boneyao.weibo import APIClientAPP_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://byrx.net
评论关闭