文档章节

Django 使用豆瓣登陆

ericwo
 ericwo
发布于 2012/08/06 15:30
字数 287
阅读 205
收藏 0

以下所叙述的为douban OAuth1.0

使用源码包安装

a). 安装gdata.py。下载gdata.py压缩包,然后按照如下方法安装

sudo python setup.py install

or

python setup.py install --home=~

and set your PYTHONPATH to include your home directory.

b). 下载 douban-python源码包并解压

c). 按照如下命令安装douban-python

sudo python setup.py install

安装好之后将douban-python中的douban放到apps里面作为app使用。

def douban_client(request):

    DOUBAN_API_KEY = ''

    DOUBAN_API_SECRET = ''

    client = OAuthClient(key=DOUBAN_API_KEY, secret=DOUBAN_API_SECRET)

    return client


@csrf_exempt

def douban_authorize(request):

    CALLBACK_URL = "http://localhost:8000/douban_login" 

    client = douban_client(request)

    request_tokens = {}

    key, secret = client.get_request_token()

    request.session['key'] = key

    request.session['secret'] = secret

    request.session['user_id'] = request.GET['user_id']

    if key and secret:

        request_tokens[key] = secret

        url = client.get_authorization_url(key, secret, callback=CALLBACK_URL)

        return HttpResponseRedirect(url) //这里将调用douban_login方法,在urls.py中配置


@csrf_exempt 

def douban_login(request):

    client = douban_client(request)

    user_id = request.session['user_id']

    access_token, access_secret, douban_uid = client.get_access_token(request.session['key'], request.session['secret'])

    try:

        profile = UserProfile.objects.get(user=user_id)

        douban_service = DoubanService(api_key=access_token, secret=access_secret)

        data = urllib.urlopen("http://api.douban.com/people/" + str(douban_uid)).read()

        doc = xml.dom.minidom.parseString(data)

        title = doc.getElementsByTagName("title")

        avatar = doc.getElementsByTagName("link")        

        profile.avatar_url = avatar[2].getAttribute("href")

        profile.save()

        profile.user.first_name = title[0].childNodes[0].nodeValue

        profile.user.save()

        return JsonResponse(success({}))

    except ObjectDoesNotExist:

        return JsonResponse(fail({}))


具体详细的授权方式可查看豆瓣开发者的API,现在都推出OAuth2.0,个人感觉微博的授权比较方便,但是python的版本也有BUG。

© 著作权归作者所有

ericwo
粉丝 3
博文 6
码字总数 871
作品 0
杭州
程序员
私信 提问
用django-social-auth 做中国社交网站三方登录(qq,微博,豆瓣,百度,人人,微信)

TODO 我写这个demo之后, python-social-auth, django-social-auth的作者(一个人),对这两个库进行了比较大的更新,pip里面甚至下掉了django-social-auth, 0.8.1这个版本,因此让demo能够跑起来...

duoduo3_69
2014/08/13
6K
1
请问大家有在Django下,使用豆瓣API登录的例子吗?

最近完成了在Django下使用豆瓣API登录页面,但是总觉得代码写得很别扭,所以请教各位有没有自己的代码分享。 我的思路是这样的: 1、在我的登录页面中放置使用豆瓣登录的button,点击button就...

bonymiao
2012/03/15
949
0
Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 期初使用driver = webdriver.PhantomJS(),返回的只是,增加了参数就...

小七奇奇
2017/12/26
0
0
pipy国内镜像

pipy国内镜像目前有: pip install django --index https://pypi.mirrors.ustc.edu.cn/simple/ 非https pip install django --index http://mirrors.aliyun.com/pypi/simple/ --trusted-hos......

沉淀岁月
2016/09/07
160
0
ubantu16.04上部署nginx+uwsgi+django,supervisor启动

首先要确保自己的django项目能启动,python manage.py runserver。 首先安装uwsgi,在终端输入 uwsgi用pip安装是最好的。 pip源用豆瓣源,豆瓣源很好很骚。python的一些国外第三方用豆瓣源下...

sola酱
2016/12/17
208
0

没有更多内容

加载失败,请刷新页面

加载更多

你知道多少this,new,bind,call,apply?那我告诉你

那么什么是this,new,bind,call,apply呢?这些你都用过吗?掌握这些内容都是基础中的基础了。如果你不了解,那还不赶快去复习复习,上网查阅资料啥的! 通过call,apply,bind可以改变thi...

达达前端小酒馆
今天
5
0
设计模式之命令模式

命令模式的类图 其中的角色有: Client 客户端。只依赖于调用者Invoker、接收者Receiver、以及Command(网上找的图片这里没有画出来),不用关注接收者如何执行命令,只需要告诉调用者需要执行...

陈年之后是青葱
今天
7
0
2. 彤哥说netty系列之IO的五种模型

你好,我是彤哥,本篇是netty系列的第二篇。 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。 简介 本文将介绍linux中的五种IO模型,同时也会介绍阻塞/非阻塞与同步/异步的区别。 何...

彤哥读源码
今天
5
0
OSChina 周四乱弹 —— 喵的波粒二象性

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 小小编辑推荐:《水墨兰亭》- 李志辉 《水墨兰亭》- 李志辉 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :卧室里采光要足够好,这样...

小小编辑
今天
37
1
前后端分离接口规范

最近在开发,遇到前后端关于Boolean类型的参数传参和接收的问题: 场景:后台会根据用户是否出车/是否出司机(Boolean类型)来决定后端的业务逻辑(比如费用的计算),前端使用JSON字符串类型...

code-ortaerc
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部