如何让豆瓣用户直接登录你的网站
我认为,未来中小型网站的开发者都不需要写用户注册和管理的功能了,这个是一个吃力不讨好的事情。首先,用户已经没有耐心填写注册资料。其次,各种加密加盐编码存储管理都非常麻烦,一不小心让人黑进去拖库就不好玩了。
所以,用大量的第三方登录就行,豆瓣,新浪微博,twitter, facebook, 人人,qq....
这里我将描述一下如何在你的网站上使用豆瓣的第三方登录功能,python版本。
顺便说一下,豆瓣的API http://www.douban.com/group/dbapi/ 太绕了,有各种版本各种用法,没统一。我这个是最简单最直接最短的。
1. 首先,在这里申请一下
http://developers.douban.com/apikey/apply
这里最重要的是“回调地址”,也就是说,你的机器必须是公网的,有域名或者是ip地址,在内网的开发机器不行。比如说,我的回调地址就是"http://216.111.111.111:8088/doubanlogin"
申请完之后,你会得到
API_KEY = '05a5*****************2'
API_SECRET = '5a**************b0'
注意,在这里你得填上测试用的豆瓣uid,比如说,你现在登录豆瓣的帐号。在开发阶段,不是所有的豆瓣用户都能以第三方的方式登录你的网站,只有你填写的测试豆瓣uid才可以。
2. 安装豆瓣的python client包
在这里 http://liluo.org/douban-client/
在linux下直接用Pip就行; pip install douban-client
3. 写代码
3.1 在你的后端代码,import 这个:
from douban_client import DoubanClient
然后,用一个新的url开始负责第三方登录,比如http://216.111.111.111/oauth2
对应这个url的get方式处理如下:
get(self):
global douban_client
API_KEY = '05a*********************a2'
API_SECRET = '5a****************0'
SCOPE = 'douban_basic_common'
redirect_uri = "http://216.111.111.111:8088/doubanlogin"
douban_client = DoubanClient(API_KEY, API_SECRET, redirect_uri, SCOPE)
self.redirect(douban_client.authorize_url)
注意: self.redirect(douban_client.authorize_url)这一行语句,会让浏览器跳转到一个豆瓣登录和认证的页面。
3.2 然后写/doubanlogin的处理流程:
def get(self):
global douban_client
code = self.get_argument("code", None)
error = self.get_argument("error", None)
if code == None:
self.redirect("/")
douban_client.auth_with_code(code)
token_code = douban_client.token_code
print "token_code = ",token_code
refresh_token_code = douban_client.refresh_token_code
douban_client.refresh_token(refresh_token_code)
print "refresh_token_code = ",refresh_token_code
#得到当前用户的信息
douban_uid = douban_client.user.me
print "douban_uid =", douban_uid
for i in douban_uid.keys():
print "[%s] = %s" % (i, douban_uid[i])
self.redirect("/")
注意:最后获取的douban_uid是一个字典,记录了豆瓣用户的各种信息,比如:
[loc_id] = 10***
[name] = 一***
[created] = 201*****
[id] = 48*****
[is_suicide] = False
[large_avatar] = http://img3.douban.com/icon/up******-6.jpg
[avatar] = http://img3.douban.com/icon/u48*******-6.jpg
[signature] =
[loc_name] = 上海
[is_banned] = False
[desc] = fr*****
[type] = user
[alt] = http://www.douban.com/people/4******/
[uid] = 48******
然后,把这些信息放到cookie以及数据库,下次就不需要重新验证了。
4. 测试
在浏览器输入url http://216.111.111.111:8088/oauth2,然后在出来的页面选择接受,然后就会跳转到doubanlogin,然后再跳转到根目录。如果拒绝,也会返回根目录。
5. 对使用Douban-client来说,这里还可以得到更多的信息,具体参考手册即可。
所以,用大量的第三方登录就行,豆瓣,新浪微博,twitter, facebook, 人人,qq....
这里我将描述一下如何在你的网站上使用豆瓣的第三方登录功能,python版本。
顺便说一下,豆瓣的API http://www.douban.com/group/dbapi/ 太绕了,有各种版本各种用法,没统一。我这个是最简单最直接最短的。
1. 首先,在这里申请一下
http://developers.douban.com/apikey/apply
这里最重要的是“回调地址”,也就是说,你的机器必须是公网的,有域名或者是ip地址,在内网的开发机器不行。比如说,我的回调地址就是"http://216.111.111.111:8088/doubanlogin"
申请完之后,你会得到
API_KEY = '05a5*****************2'
API_SECRET = '5a**************b0'
注意,在这里你得填上测试用的豆瓣uid,比如说,你现在登录豆瓣的帐号。在开发阶段,不是所有的豆瓣用户都能以第三方的方式登录你的网站,只有你填写的测试豆瓣uid才可以。
2. 安装豆瓣的python client包
在这里 http://liluo.org/douban-client/
在linux下直接用Pip就行; pip install douban-client
3. 写代码
3.1 在你的后端代码,import 这个:
from douban_client import DoubanClient
然后,用一个新的url开始负责第三方登录,比如http://216.111.111.111/oauth2
对应这个url的get方式处理如下:
get(self):
global douban_client
API_KEY = '05a*********************a2'
API_SECRET = '5a****************0'
SCOPE = 'douban_basic_common'
redirect_uri = "http://216.111.111.111:8088/doubanlogin"
douban_client = DoubanClient(API_KEY, API_SECRET, redirect_uri, SCOPE)
self.redirect(douban_client.authorize_url)
注意: self.redirect(douban_client.authorize_url)这一行语句,会让浏览器跳转到一个豆瓣登录和认证的页面。
3.2 然后写/doubanlogin的处理流程:
def get(self):
global douban_client
code = self.get_argument("code", None)
error = self.get_argument("error", None)
if code == None:
self.redirect("/")
douban_client.auth_with_code(code)
token_code = douban_client.token_code
print "token_code = ",token_code
refresh_token_code = douban_client.refresh_token_code
douban_client.refresh_token(refresh_token_code)
print "refresh_token_code = ",refresh_token_code
#得到当前用户的信息
douban_uid = douban_client.user.me
print "douban_uid =", douban_uid
for i in douban_uid.keys():
print "[%s] = %s" % (i, douban_uid[i])
self.redirect("/")
注意:最后获取的douban_uid是一个字典,记录了豆瓣用户的各种信息,比如:
[loc_id] = 10***
[name] = 一***
[created] = 201*****
[id] = 48*****
[is_suicide] = False
[large_avatar] = http://img3.douban.com/icon/up******-6.jpg
[avatar] = http://img3.douban.com/icon/u48*******-6.jpg
[signature] =
[loc_name] = 上海
[is_banned] = False
[desc] = fr*****
[type] = user
[alt] = http://www.douban.com/people/4******/
[uid] = 48******
然后,把这些信息放到cookie以及数据库,下次就不需要重新验证了。
4. 测试
在浏览器输入url http://216.111.111.111:8088/oauth2,然后在出来的页面选择接受,然后就会跳转到doubanlogin,然后再跳转到根目录。如果拒绝,也会返回根目录。
5. 对使用Douban-client来说,这里还可以得到更多的信息,具体参考手册即可。
热门话题 · · · · · · ( 去话题广场 )
- 2024画春天 131.0万次浏览
- 我的读书搭子 8400次浏览
- 我的个人阅读史 新话题 · 344次浏览
- 哪一瞬间你发现生命何其脆弱? 64.3万次浏览
- 面对朋友的倾诉,如何做到有效的关心? 98.2万次浏览
- 你出国后用多长时间克服了语言关? 35.6万次浏览