@@ -22,9 +22,12 @@ isoweek==1.3.1 |
||
| 22 | 22 |
kkconst==1.1.3 |
| 23 | 23 |
mock==2.0.0 |
| 24 | 24 |
pep8==1.7.0 |
| 25 |
+pywe-oauth==1.0.1 |
|
| 26 |
+pywe-utils==1.0.0 |
|
| 25 | 27 |
records==0.4.3 |
| 26 | 28 |
redis==2.10.5 |
| 27 |
-redis-extensions==1.0.22 |
|
| 29 |
+redis-extensions==1.0.23 |
|
| 30 |
+requests==2.12.1 |
|
| 28 | 31 |
rlog==0.2 |
| 29 | 32 |
shortuuid==0.4.3 |
| 30 | 33 |
uWSGI==2.0.14 |
@@ -1,20 +1,17 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 | 3 |
import time |
| 4 |
-import urllib |
|
| 5 | 4 |
|
| 6 |
-import requests |
|
| 7 | 5 |
import shortuuid |
| 8 | 6 |
from django.conf import settings |
| 9 | 7 |
from django.shortcuts import redirect |
| 10 | 8 |
from furl import furl |
| 11 | 9 |
from json_response import auto_response |
| 10 |
+from pywe_oauth import get_access_info, get_oauth_code_url, get_userinfo |
|
| 12 | 11 |
from wechatpy import WeChatClient |
| 13 | 12 |
|
| 14 | 13 |
|
| 15 |
-r = settings.REDIS_CACHE |
|
| 16 |
-WECHAT = settings.WECHAT |
|
| 17 |
-JSAPI = WECHAT.get('JSAPI', {})
|
|
| 14 |
+JSAPI = settings.WECHAT.get('JSAPI', {})
|
|
| 18 | 15 |
|
| 19 | 16 |
|
| 20 | 17 |
def wx_oauth2(request): |
@@ -22,15 +19,9 @@ def wx_oauth2(request): |
||
| 22 | 19 |
redirect_url = request.GET.get('redirect_url', '')
|
| 23 | 20 |
default_url = request.GET.get('default_url', '')
|
| 24 | 21 |
|
| 25 |
- redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI |
|
| 26 |
- |
|
| 27 | 22 |
if request.weixin: |
| 28 |
- return redirect(settings.WECHAT_OAUTH2_AUTHORIZE.format( |
|
| 29 |
- appid=JSAPI['appID'], |
|
| 30 |
- redirect_uri=urllib.quote_plus(redirect_uri), |
|
| 31 |
- scope=scope, |
|
| 32 |
- state=urllib.quote_plus(redirect_url) |
|
| 33 |
- )) |
|
| 23 |
+ redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI |
|
| 24 |
+ return redirect(get_oauth_code_url(JSAPI['appID'], redirect_uri, scope, redirect_url)) |
|
| 34 | 25 |
|
| 35 | 26 |
return redirect(default_url or redirect_url) |
| 36 | 27 |
|
@@ -39,11 +30,7 @@ def base_redirect(request): |
||
| 39 | 30 |
code = request.GET.get('code', '')
|
| 40 | 31 |
state = request.GET.get('state', '')
|
| 41 | 32 |
|
| 42 |
- access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format( |
|
| 43 |
- appid=JSAPI['appID'], |
|
| 44 |
- secret=JSAPI['appsecret'], |
|
| 45 |
- code=code |
|
| 46 |
- ), verify=False).json() |
|
| 33 |
+ access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code) |
|
| 47 | 34 |
|
| 48 | 35 |
return redirect(furl(state).add(access_info).url) |
| 49 | 36 |
|
@@ -52,19 +39,8 @@ def userinfo_redirect(request): |
||
| 52 | 39 |
code = request.GET.get('code', '')
|
| 53 | 40 |
state = request.GET.get('state', '')
|
| 54 | 41 |
|
| 55 |
- access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format( |
|
| 56 |
- appid=JSAPI['appID'], |
|
| 57 |
- secret=JSAPI['appsecret'], |
|
| 58 |
- code=code |
|
| 59 |
- ), verify=False).json() |
|
| 60 |
- openid, access_token = access_info.get('openid', ''), access_info.get('access_token', '')
|
|
| 61 |
- |
|
| 62 |
- res = requests.get(settings.WECHAT_OAUTH2_USERINFO.format( |
|
| 63 |
- access_token=access_token, |
|
| 64 |
- openid=openid |
|
| 65 |
- ), verify=False) |
|
| 66 |
- res.encoding = 'utf-8' |
|
| 67 |
- userinfo = res.json() |
|
| 42 |
+ access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code) |
|
| 43 |
+ userinfo = get_userinfo(access_info.get('access_token', ''), access_info.get('openid', ''))
|
|
| 68 | 44 |
|
| 69 | 45 |
return redirect(furl(state).add(userinfo).url) |
| 70 | 46 |
|