django实现qq一键登录(qq互联)
来源:互联网 发布:美工招聘信息 编辑:程序博客网 时间:2024/05/16 16:03
#在login登录url下留出qq登录url#eg:www.323.com/login?type=qqtp = request.GET.get('type',None)if tp: code_url = 'https://graph.qq.com/oauth2.0/authorize' parm = { 'response_type':'code', 'client_id':'你的appid', 'redirect_uri':'www.323.com/qq', 'state':'test' } auth_url = '%s?%s'%(code_url, urlencode(parm)) return HttpResponseRedirect(auth_url)else: return render(request, 'login.html', locals())#其中redirect_uri为回调url,qq服务器收到登录请求后调用你的后台实现#www.323.com/qq 指向如下实现#流程如下:#1.www.323.com/login?type=qq#2.--->跳转qq登录页面#3.--->qq调用后台www.323.com/qq#4.--->映射处理登录验证#qq = QQ(^$#%%$)#access_token = qq.get_access_token()#openid = qq.get_openid(access_token)#user_info = qq.get_userinfo(access_token,openid) #返回字典#5.保持用户信息到本地数据库#成功登录后跳转到登录前页面#QQ登录#token_url = 'https://graph.qq.com/oauth2.0/token'#auth_url = 'https://graph.qq.com/oauth2.0/me' class QQ(object): def __init__(self,appid,appkey,token_url,auth_url,user_info_url,redirect_uri,code,state): self.appid=appid self.appkey=appkey self.token_url=token_url self.auth_url=auth_url self.redirect_uri=redirect_uri self.code=code self.state=state self.user_info_url = user_info_url #获取access_token def get_access_token(self): parm = { 'grant_type':'authorization_code', 'client_id':self.appid, 'client_secret':self.appkey, 'redirect_uri':self.redirect_uri, 'code':self.code } try: parm_token_url = '%s?%s'%(token_url, urlencode(parm)) req = urllib2.Request(parm_token_url) resp = urllib2.urlopen(req) content = resp.read() access_token = urllib2.urlparse.parse_qs(content).get('access_token', [''])[0] return access_token except urllib2.URLError, e: print e.reason #获取OpenID def get_openid(self,access_token): try: parm_auth_url = '%s?%s'%(self.auth_url, urlencode({'access_token': access_token,})) req = urllib2.Request(parm_auth_url) resp = urllib2.urlopen(req) content = resp.read() content = content[content.find('(')+1:content.rfind(')')] data = json.loads(content) openid = data.get('openid') return openid except urllib2.URLError, e: print e.reason #获取uerinfo def get_userinfo(self,access_token,openid): parm = { 'access_token':access_token, 'oauth_consumer_key':self.appid, 'openid':openid } try: parm_user_info_url = '%s?%s'%(self.user_info_url, urlencode(parm)) req = urllib2.Request(parm_user_info_url) resp = urllib2.urlopen(req) content = resp.read() user_info = json.loads(content) return user_info except urllib2.URLError, e: print e.reason
0 0
- django实现qq一键登录(qq互联)
- qq一键登录
- php 实现qq一键登录
- 在django中实现QQ登录
- django QQ认证登录
- Android实现登录系统(一)--QQ登录
- Android webview实现QQ一键登录授权
- android 实现qq登录
- Qt之QQ登录界面(一)
- android QQ第三方登录(一)
- 第三方登录(QQ登陆)实现
- curl 实现qq挂号登录
- qq登录界面及其实现
- C#实现QQ空间登录
- QQ实现第三方登录
- 实现QQ第三方登录
- PHP实现QQ快速登录
- Android应用实现QQ登录
- iOS 即时通讯XMPP
- Android: Drawable Resources
- boost::shared_ptr boost::make_shared
- 编写一个密码类,其中包含一个 str 密码字符串私有成员数据,一个“==”运算 符重载成员函数,用于比较用户输入的密码是否正确。并用数据测试该类。
- C++卷积神经网络实例:tiny_cnn代码详解(5)——convolutional_layer类结构信息之其他成员函数
- django实现qq一键登录(qq互联)
- Mybatis步步进阶(七)——Mybatis实体关联映射
- 矩阵清零
- C++卷积神经网络实例:tiny_cnn代码详解(6)——average_pooling_layer层结构类分析
- MyEclipse开启后右下角不停的在Update index
- linux常用命令大全
- vim常用配置
- 赵云和吕布到底谁更厉害?
- Byte字节获取