Exemple #1
0
 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))
Exemple #2
0
 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))
Exemple #3
0
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("")
Exemple #4
0
 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))
Exemple #5
0
 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))
Exemple #6
0
 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))
Exemple #7
0
 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))