pythonは微信ユーザーの基本情報を取得する

4338 ワード

pythonは微信ユーザーの基本情報を取得する
今日、微信でよく使われている基本的な知識を整理してみると、以前Javaで抽出した微信ユーザー情報はpythonで完成することができ、コード量が少なく、個人的にはJavaよりずっと簡潔明瞭だと思います.コードを見てみましょう.よく書けません.
WeChatのパブリックアカウントが承認された役割ドメイン(scopeパラメータ)の権限を持っていることを確認した上で(サービス番号が高度なインタフェースを取得した後、デフォルトではscopeパラメータのsnsapi_baseとsnsapi_userinfoを持っている)、注目者を誘導して次のページを開きます:scopeをsnsapi_としますuserinfoを例に挙げます.https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
まず、flask、urllib、jsonなどの基本パケットを参照するグローバル変数と参照をロードするパケットを定義する必要があります.AppIDもAppSecretも分かるだろうなhttps://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
# encoding=utf-8
from flask import Flask,request
import urllib.request
import json

appID="......"
AppSecret="......"
url_code = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={appsecret}&code={code}&grant_type=authorization_code"
url_retoken = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={appid}&grant_type=refresh_token&refresh_token={refresh_token}"
url_info = "https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}&lang=zh_CN"

flaskルーティングによる判断
app = Flask(__name__)
@app.route('/pywx/getWeiXin')

次に、基本的な情報の取得方法について説明します.
def getCode():
    #      ,  code。          code   
    code = request.args.get('code')
    #code       
    if code:
        #  accessToken openID
        accessToken = urllib.request.Request(url_code.format(appid=appID, appsecret=AppSecret, code=code))
        res_data = urllib.request.urlopen(accessToken)
        res = res_data.read().decode('utf-8')
        res_json=json.loads(res)#  json
        access_token=res_json["access_token"]
        refresh_token=res_json["refresh_token"]
        openid = res_json["openid"]
        #  access_token(     )
       getRefreshToken=
     urllib.request.Request(url_retoken.format(appid=appID,refresh_token=refresh_token))
        res_data = urllib.request.urlopen(getRefreshToken)
        res_reToken = res_data.read().decode('utf-8')
        res_json = json.loads(res_reToken)  #   json
        access_token = res_json["access_token"]
        #        
        getUserInfo = urllib.request.Request(url_info.format(access_token=access_token,openid=openid))
        res_data = urllib.request.urlopen(getUserInfo)
        res = res_data.read().decode('utf-8')
        #          
        return res

最後に文を実行します
if __name__ == '__main__':
    #app.run(host="     ",post=   ,debug  )
    app.run(port=7099,debug=True)

大功を成し遂げる.しかし、やはり最適化が必要なところがあります.ただ一つの考えを話していますよ.github:https://github.com/DIVIBEAR/pythonDemo/blob/master/demo/pywx/