def getSnsapiUserInfo(cls, access_token, openid, lang="zh_CN"): """拉取用户信息(通过网页授权) """ _SNSUSER_URL = "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang={2}" log.debug("[WXAPI]getSnsapiUserInfo, url: %s", _SNSUSER_URL) return HttpClient().get(_SNSUSER_URL.format(access_token, openid, lang))
def getUserInfo(cls, access_token, openid, lang="zh_CN"): """获取用户基本信息 http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html """ _USER_URL = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang={2}" log.debug("[WXAPI]Fetch Tencent UserInfo, url: %s", _USER_URL) return HttpClient().get(_USER_URL.format(access_token, openid, lang))
def post_res_for_job(request): media_id = request.GET.get('media_id') if not media_id: return HttpResponse("") access_token = CommonHelper.access_token url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s" % ( access_token, media_id) log.debug("Res Url: %s" % url) ret = requests.get(url) if ((ret.status_code == 200) and ("image" in ret.headers["Content-Type"]) and ("filename" in ret.headers["Content-disposition"]) and (ret.headers["Content-Length"] > 500)): OSSUgcRes = OSSTools('ugcres') picname = str_tools.gen_short_uuid() OSSUgcRes.upload_from_url(picname, ret.content) log.info("[UploadToOSS] Succ, url: %s picname: %s " % (url, picname)) return HttpResponse(picname) else: resp = json.loads(ret.text) if "errcode" in resp and (resp["errcode"] == 40001 or resp["errcode"] == 42001): log.error("Wrong Ret, going to clear access token, err: %s" % ret.text) CommonHelper.clear_access_token log.error( "[UploadToOSS] Fail, Check Url: %s Header: %s Resp: %s" % (url, str(ret.headers), ret.text)) return HttpResponse("")
def refreshAccessToken(cls, refresh_token): """刷新access_token, 使用getAccessTokenByCode()返回的refresh_token刷新access_token,可获得较长时间有效期 http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html """ _REFRESHTOKRN_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1}" log.debug("[WXAPI]refreshAccessToken, url: %s", _REFRESHTOKRN_URL) return HttpClient().get( _REFRESHTOKRN_URL.format(WxPayConf_pub.APPID, refresh_token))
def getAccessTokenByCode(cls, code): """通过code换取网页授权access_token, 该access_token与getAccessToken()返回是不一样的 http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html """ _CODEACCESS_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code" log.debug("[WXAPI]Fetch AccessTokenByCode, url: %s", _CODEACCESS_URL) return HttpClient().get( _CODEACCESS_URL.format(WxPayConf_pub.APPID, WxPayConf_pub.APPSECRET, code))
def getAccessToken(cls): """获取access_token 需要缓存access_token,由于缓存方式各种各样,不在此提供 http://mp.weixin.qq.com/wiki/11/0e4b294685f817b95cbed85ba5e82b8f.html """ _ACCESS_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}" log.debug("[WXAPI]Fetch AccessToken, url: %s", _ACCESS_URL) return HttpClient().get( _ACCESS_URL.format(WxPayConf_pub.APPID, WxPayConf_pub.APPSECRET))
def getJsapiTicket(cls, access_token): """获取jsapi_tocket """ _JSAPI_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi" log.debug("[WXAPI]Fetch JsapiTicket, url: %s", _JSAPI_URL) return HttpClient().get(_JSAPI_URL.format(access_token))