update wechat relative

Brightcells 8 年 前
コミット
3b39460e59
共有3 個のファイルを変更した16 個の追加13 個の削除を含む
  1. 3 4
      pai2/settings.py
  2. 0 1
      requirements.txt
  3. 13 8
      wechat/views.py

+ 3 - 4
pai2/settings.py

@@ -275,11 +275,10 @@ WECHAT = {
275 275
 
276 276
 WECHAT_REDIRECT_URI = 'http://api.pai.ai/to_redirect'
277 277
 
278
-WECHAT_GET_CODE_BASE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=%s#wechat_redirect'
279
-WECHAT_GET_CODE_USERINFO = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_userinfo&state=%s#wechat_redirect'
280
-WECHAT_GET_OAUTH2_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code'
278
+WECHAT_OAUTH2_AUTHORIZE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={redirect_uri}&response_type=code&scope={scope}&state={state}#wechat_redirect'
279
+WECHAT_OAUTH2_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={secret}&code={code}&grant_type=authorization_code'
281 280
 
282
-WECHAT_GET_USERINFO = 'https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s'
281
+WECHAT_OAUTH2_USERINFO = 'https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}'
283 282
 
284 283
 # 微信支付设置
285 284
 WXPAY_NOTIFY_SUCCESS = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'

+ 0 - 1
requirements.txt

@@ -19,7 +19,6 @@ ipython==4.0.0
19 19
 jsonfield==1.0.3
20 20
 kkconst==1.1.2
21 21
 pep8==1.6.2
22
-pysnippets==1.0.2
23 22
 pytz==2015.7
24 23
 records==0.4.3
25 24
 redis==2.10.5

+ 13 - 8
wechat/views.py

@@ -5,12 +5,10 @@ import urllib
5 5
 
6 6
 import requests
7 7
 import shortuuid
8
-from CodeConvert import CodeConvert as cc
9 8
 from django.conf import settings
10 9
 from django.shortcuts import redirect
11 10
 from furl import furl
12 11
 from json_response import auto_response
13
-from pysnippets import dictsnippets as dsnippets
14 12
 from wechatpy import WeChatClient
15 13
 
16 14
 
@@ -25,9 +23,12 @@ def get_openid(request):
25 23
     default_url = request.GET.get('default_url', '')
26 24
 
27 25
     if request.weixin:
28
-        authorize_url = settings.WECHAT_GET_CODE_USERINFO if scope == 'snsapi_userinfo' else settings.WECHAT_GET_CODE_BASE
29
-        get_code_url = authorize_url % (JSAPI['appID'], urllib.quote_plus(settings.WECHAT_REDIRECT_URI), urllib.quote_plus(redirect_url))
30
-        return redirect(get_code_url)
26
+        return redirect(settings.WECHAT_OAUTH2_AUTHORIZE.format(
27
+            appid=JSAPI['appID'],
28
+            redirect_uri=urllib.quote_plus(settings.WECHAT_REDIRECT_URI),
29
+            scope=scope,
30
+            state=urllib.quote_plus(redirect_url)
31
+        ))
31 32
 
32 33
     return redirect(default_url if default_url else redirect_url)
33 34
 
@@ -36,14 +37,18 @@ def to_redirect(request):
36 37
     code = request.GET.get('code', '')
37 38
     state = request.GET.get('state', '')
38 39
 
39
-    access_info = requests.get(settings.WECHAT_GET_OAUTH2_ACCESS_TOKEN % (JSAPI['appID'], JSAPI['appsecret'], code), verify=False).json()
40
+    access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(
41
+        appid=JSAPI['appID'],
42
+        secret=JSAPI['appsecret'],
43
+        code=code
44
+    ), verify=False).json()
40 45
     unionid, openid, access_token = access_info.get('unionid', ''), access_info.get('openid', ''), access_info.get('access_token', '')
41 46
 
42
-    res = requests.get(settings.WECHAT_GET_USERINFO % (access_token, openid), verify=False)
47
+    res = requests.get(settings.WECHAT_OAUTH2_USERINFO.format(access_token=access_token, openid=openid), verify=False)
43 48
     res.encoding = 'utf-8'
44 49
     userinfo = res.json()
45 50
 
46
-    return redirect(furl(state).add(cc.Convert2Utf8(dsnippets.filter(userinfo, ['unionid', 'openid', 'nickname', 'headimgurl']))).url)
51
+    return redirect(furl(state).add(userinfo).url)
47 52
 
48 53
 
49 54
 @auto_response