22
33import requests
44import time
5+ import urllib
56from .models import WxRequest , WxResponse
67from .models import WxArticle , WxImage , WxVoice , WxVideo , WxLink
78from .models import WxTextResponse , WxImageResponse , WxVoiceResponse ,\
@@ -76,6 +77,7 @@ def format_list(data):
7677 else :
7778 return data
7879
80+
7981def simplify_send_parmas (params ):
8082 keys = params .keys ()
8183 for key in keys :
@@ -96,7 +98,7 @@ def __init__(self, appid, appsecret, api_entry=None):
9698 def access_token (self ):
9799 if self ._access_token and time .time () >= self .expires_in :
98100 self ._access_token = None
99-
101+
100102 if not self ._access_token :
101103 token , err = self .get_access_token ()
102104 if not err :
@@ -329,3 +331,18 @@ def get_menu(self, agentid):
329331
330332 def delete_menu (self , agentid ):
331333 return self ._get ('cgi-bin/menu/delete' , {'agentid' : agentid })
334+
335+ # OAuth2
336+ def authorize_url (self , appid , redirect_uri , response_type = 'code' ,
337+ scope = 'snsapi_base' , state = None ):
338+ url = 'https://open.weixin.qq.com/connect/oauth2/authorize'
339+ params = {'appid' : appid , 'redirect_uri' : redirect_uri ,
340+ 'response_type' : response_type , 'scope' : scope }
341+ if state :
342+ params ['state' ] = state
343+ query = urllib .urlencode (params )
344+ return url + '?' + query + '#bwechat_redirect'
345+
346+ def get_user_info (self , agentid , code ):
347+ return self ._get ('cgi-bin/user/getuserinfo' ,
348+ {'agentid' : agentid , 'code' : code })
0 commit comments