def authorization(request): """ 获取用户信息,登录,跳转 :param request: :return: """ """ https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6fe7f0568b75d925&redirect_uri=http://www.yinzishao.cn/authorization&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect """ code = request.GET.get('code') auth_redirect_uri = DOMAIN + "authorization" api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=auth_redirect_uri) auth_info = api.exchange_code_for_access_token(code=code) api = WeixinAPI(access_token=auth_info['access_token']) resp = api.user(openid=auth_info['openid']) request.session['info'] = resp openid = resp['openid'] try: user = User.objects.get(username=openid) except User.DoesNotExist,e: print "user not exist" user = User.objects.create_user(openid,password=openid)
def authorization(): code = request.args.get('code') api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=REDIRECT_URI) auth_info = api.exchange_code_for_access_token(code=code) api = WeixinAPI(access_token=auth_info['access_token']) resp = api.user(openid=auth_info['openid']) return jsonify(resp)
def weixin_authorization(request): code = request.GET.get('code') api = WeixinAPI( appid=settings.APP_ID, app_secret=settings.APP_SECRERT, redirect_uri=settings.REDIRECT_URI ) auth_info = api.exchange_code_for_access_token(code=code) api = WeixinAPI(access_token=auth_info['access_token']) resp = api.user(openid=auth_info['openid']) return Response(data=resp, status=status.HTTP_200_OK)
def get(self, request): print(1111111111) code = request.GET.get('code') print(code) api = WeixinAPI(appid="wxbb19e286afae10db", app_secret="064004a0dd2a8a4c0eeed40975e8907c", redirect_uri="http://127.0.0.1:8000/authorization") auth_info = api.exchange_code_for_access_token(code=code) api = WeixinAPI(access_token=auth_info['access_token']) resp = api.user(openid=auth_info['openid']) return redirect( "http://127.0.0.1:8000/taskpub?nickname={}&headimgurl={}".format( resp["nickname"], resp["headimgurl"]))
def login(): global APP_ID, APP_SECRET, REDIRECT_URI api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=REDIRECT_URI) redirect_uri = api.get_authorize_login_url(scope=("snsapi_base",)) return redirect(redirect_uri)
def adminAuthorization(request): """ 获取用户信息,登录,跳转 :param request: :return: """ auth_redirect_uri = DOMAIN + "adminAuthorization" code = request.GET.get('code') api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=auth_redirect_uri) auth_info = api.exchange_code_for_access_token(code=code) api = WeixinAPI(access_token=auth_info['access_token']) resp = api.user(openid=auth_info['openid']) request.session['info'] = resp return redirect(DOMAIN + 'administor/view/index.html')
def weixinlogin(): api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=REDIRECT_URI) authorize_url = api.get_authorize_url(scope=("snsapi_base", )) #redirect_uri = api.get_authorize_login_url(scope=("snsapi_login",)) return redirect(authorize_url)
def weixin_login(request): api = WeixinAPI( appid=settings.APP_ID, app_secret=settings.APP_SECRERT, redirect_uri=settings.REDIRECT_URI ) redirect_uri = api.get_authorize_login_url(scope=('snsapi_login',)) return Response(data=redirect_uri, status=status.HTTP_200_OK)
# -*- coding: utf-8 -*- from weixin.client import WeixinAPI from weixin.oauth2 import OAuth2AuthExchangeError APP_ID = 'your app id' APP_SECRET = 'your secret' REDIRECT_URI = 'http://www.exmple.com' code = '0418f2c46cd26e4f9eee5bf03320662M' api = WeixinAPI(appid=APP_ID, app_secret=APP_SECRET, redirect_uri=REDIRECT_URI) try: pass # print api.get_authorize_login_url(scope=("snsapi_login",)) # print api.exchange_code_for_access_token(code=code) except OAuth2AuthExchangeError as e: print(e) auth_info = { 'access_token': 'OezXcEiiBSKSxW0eoylIeGXVgVFIUy2pK5I7TVatC5MGtVqTIWjtyV5Pax8ZLiWw-NdEN9dPkEX8Yewsve2AktmzS0gmbvzRKO49l6sxHRfhXg1no5ObdGufYhRIubP2m3FUdv-Cop3t3S_xwMbBWQ', 'refresh_token': 'OezXcEiiBSKSxW0eoylIeGXVgVFIUy2pK5I7TVatC5MGtVqTIWjtyV5Pax8ZLiWw44bjXRXdmPsclqGIjWs777H3p00QI9a3hzX265Uq9fPJZttNQApdCRPbySXDfofbjniiwsVJiT7fTv7j5jCAxg', 'openid': u'oV02tuA8Wt6Kk7S0pVydThYvmSJA', 'expires_in': 7200, 'scope': u'snsapi_login' } try:
def getUserInfo(code): auth_info = WechatUser.api.exchange_code_for_access_token(code=code) data = WeixinAPI(access_token=auth_info['access_token']) return data.user(openid=auth_info['openid'])
def getUrl(url): WechatUser.api = WeixinAPI(appid=WechatUser.APP_ID, app_secret=WechatUser.APP_SECRET, redirect_uri=url) return WechatUser.api.get_authorize_url(scope=WechatUser.scope)
try: import __builtin__ input = getattr(__builtin__, 'raw_input') except (ImportError, AttributeError): pass appid = input("App ID: ").strip() app_secret = input("App Secret: ").strip() redirect_uri = input("Redirect URI: ").strip() raw_scope = input("Requested scope (separated by spaces, blank for just basic read): ").strip() scope = raw_scope.split(' ') # For basic, API seems to need to be set explicitly if not scope or scope == [""]: scope = ["snsapi_login"] api = WeixinAPI(appid=appid, app_secret=app_secret, redirect_uri=redirect_uri) redirect_uri = api.get_authorize_login_url(scope=scope) print ("Visit this page and authorize access in your browser: "+ redirect_uri) code = (str(input("Paste in code in query string after redirect: ").strip())) access_token = api.exchange_code_for_access_token(code) print ("access token: " ) print (access_token)
def __init__(self, token=None, appid=None, appsecret=None, partnerid=None, partnerkey=None, paysignkey=None, access_token=None, access_token_expires_at=None, jsapi_ticket=None, jsapi_ticket_expires_at=None, weixinname=None, firsteye=None, menuMap=None, owner_db=None, open_appid=None, open_secrept=None, open_redirect_uri=None): """ :param token: 微信 Token :param appid: App ID :param appsecret: App Secret :param partnerid: 财付通商户身份标识, 支付权限专用 :param partnerkey: 财付通商户权限密钥 Key, 支付权限专用 :param paysignkey: 商户签名密钥 Key, 支付权限专用 :param access_token: 直接导入的 access_token 值, 该值需要在上一次该类实例化之后手动进行缓存并在此处传入, 如果不传入, 将会在需要时自动重新获取 :param access_token_expires_at: 直接导入的 access_token 的过期日期,该值需要在上一次该类实例化之后手动进行缓存并在此处传入, 如果不传入, 将会在需要时自动重新获取 :param jsapi_ticket: 直接导入的 jsapi_ticket 值, 该值需要在上一次该类实例化之后手动进行缓存并在此处传入, 如果不传入, 将会在需要时自动重新获取 :param jsapi_ticket_expires_at: 直接导入的 jsapi_ticket 的过期日期,该值需要在上一次该类实例化之后手动进行缓存并在此处传入, 如果不传入, 将会在需要时自动重新获取 """ self.__token = token self.__token = token self.__appid = appid self.__appsecret = appsecret self.__partnerid = partnerid self.__partnerkey = partnerkey self.__paysignkey = paysignkey self.__access_token = access_token self.__access_token_expires_at = access_token_expires_at self.__jsapi_ticket = jsapi_ticket self.__jsapi_ticket_expires_at = jsapi_ticket_expires_at self.__is_parse = False self.__message = None self.__weixinname = weixinname self.owner_db = owner_db #实例属性 self.token = token self.appid = appid self.open_appid = open_appid self.open_secrept = open_secrept self.appsecret = appsecret self.partnerid = partnerid self.partnerkey = partnerkey self.paysignkey = paysignkey self.firsteye = firsteye self.menuMap = menuMap self.weixinName = weixinname self.open_redirect_uri = open_redirect_uri self.openapi = WeixinAPI(appid=self.open_appid, app_secret=self.open_secrept, redirect_uri=self.open_redirect_uri)