oauth.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # encoding: utf-8
  2. from __future__ import absolute_import, unicode_literals
  3. import six
  4. from wechatpy.client.api.base import BaseWeChatAPI
  5. class WeChatOAuth(BaseWeChatAPI):
  6. OAUTH_BASE_URL = 'https://open.weixin.qq.com/connect/oauth2/authorize'
  7. def authorize_url(self, redirect_uri, state=None):
  8. """
  9. 构造网页授权链接
  10. 详情请参考
  11. https://work.weixin.qq.com/api/doc#90000/90135/91022
  12. :param redirect_uri: 授权后重定向的回调链接地址
  13. :param state: 重定向后会带上 state 参数
  14. :return: 返回的 JSON 数据包
  15. """
  16. redirect_uri = six.moves.urllib.parse.quote(redirect_uri, safe=b'')
  17. url_list = [
  18. self.OAUTH_BASE_URL,
  19. '?appid=',
  20. self._client.corp_id,
  21. '&redirect_uri=',
  22. redirect_uri,
  23. '&response_type=code&scope=snsapi_base',
  24. ]
  25. if state:
  26. url_list.extend(['&state=', state])
  27. url_list.append('#wechat_redirect')
  28. return ''.join(url_list)
  29. def get_user_info(self, code):
  30. """
  31. 获取访问用户身份
  32. 详情请参考
  33. https://work.weixin.qq.com/api/doc#90000/90135/91023
  34. :param code: 通过成员授权获取到的code
  35. :return: 返回的 JSON 数据包
  36. """
  37. return self._get(
  38. 'user/getuserinfo',
  39. params={
  40. 'code': code,
  41. }
  42. )