def index(request): code = request.GET.get('code', '') if code == '': return HttpResponseRedirect('/login/') user = User.objects.filter(code=code) client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) if user.count() != 0: user = user[0] else: r = client.request_access_token(code) dbuser = User.objects.filter(uid=r.uid) if dbuser.count() == 0: user = User(uid=r.uid, access_token=r.access_token, expires_in=r.expires_in, code=code) user.save() else: user = dbuser[0] user.code, user.access_token, user.expires_in, = code, r.access_token, r.expires_in user.save() access_token = user.access_token # 新浪返回的token,类似abc123xyz456 # token过期的UNIX时间:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4 expires_in = user.expires_in client.set_access_token(access_token, expires_in) print "login:", user.uid, access_token, expires_in # print client.statuses.user_timeline.get() # print client.statuses.update.post(status=u'测试OAuth 2.0发微博') # print client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', # pic=open('/Users/michael/test.png')) template = loader.get_template('main/index.html') # screen_name = client.users.show.get(uid=user.uid)['screen_name'] screen_name = user.uid return HttpResponse(template.render({'screen_name':screen_name}))