user_info.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import os
  2. import sys
  3. sys.path.append(os.path.dirname(os.path.dirname(__file__)))
  4. import httpx
  5. import aiohttp
  6. from config import logger
  7. from pydantic import BaseModel
  8. class DouyinUserInfoResponse(BaseModel):
  9. error_code: int
  10. data: dict
  11. async def get_user_info(open_id, access_token):
  12. url = "https://open.douyin.com/oauth/userinfo/"
  13. headers = {
  14. "Content-Type": "application/x-www-form-urlencoded"
  15. }
  16. data = {
  17. "open_id": open_id,
  18. "access_token": access_token
  19. }
  20. res = None
  21. async with httpx.AsyncClient() as client:
  22. response = await client.post(url, headers=headers, params=data)
  23. res = response.json().get("data")
  24. logger.debug(res)
  25. return res
  26. '''return
  27. {'data': {'avatar': 'https://p6.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038', 'avatar_larger': 'https://p11.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038', 'captcha': '', 'city': '', 'client_key': 'aw6aipmfdtplwtyq', 'country': '', 'desc_url': '', 'description': '', 'district': '', 'e_account_role': '', 'error_code': 0, 'gender': 0, 'log_id': '20240129142818189D643B12E3055CE271', 'nickname': '程序员马工', 'open_id': '_000QadFMhmU1jNCI3JdPnyVDL6XavC70dFy', 'province': '', 'union_id': 'b138db97-01ae-59bd-978a-1de8566186a8'}, 'message': 'success'}
  28. '''
  29. async def main():
  30. open_id = "_000QadFMhmU1jNCI3JdPnyVDL6XavC70dFy"
  31. access_token = "act.3.wl8L3DFQ3sj3uKYzQShOSs8HbOgKh0FVvjxKeaTum0ZOEXoyBI8D1N7gTBqGbrY32KP-Pm41EAvcobSheOBi8tvRdhj7m5-5ZVoprZZu_GN5J2KnH2fZ_X9_l7Q6iFyvpPoMkX3Zyom3PCkeRZp4Jg9sE2ZiwuvZVdnvft0A25uBWXvj2IEbWW_0Bf8="
  32. result = await get_user_info(open_id, access_token)
  33. logger.debug(result)
  34. if __name__ == "__main__":
  35. import asyncio
  36. asyncio.run(main())