GetLoginUrl.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const API = require("../../../lib/API")
  2. const axios = require('axios')
  3. const config = require('../../../config.json')
  4. const { BaseStdResponse } = require("../../../BaseStdResponse");
  5. const https = require("https")
  6. class GetLoginUrl extends API {
  7. constructor() {
  8. super();
  9. this.setPath('/UniLogin/GetLoginUrl')
  10. this.setMethod('GET')
  11. }
  12. async onRequest(req, res) {
  13. let { type, device } = req.query
  14. const uniConfig = config.unilogin
  15. let url = `${uniConfig.url}/connect.php?act=login&appid=${uniConfig.appid}&appkey=${uniConfig.appkey}&type=${type || 'qq'}&redirect_uri=${encodeURIComponent(uniConfig.return_url)}`
  16. if (device && device === 'uniapp')
  17. url = `${uniConfig.url}/connect.php?act=login&appid=${uniConfig.appid}&appkey=${uniConfig.appkey}&type=${type || 'qq'}&redirect_uri=${encodeURIComponent(uniConfig.uni_return_url)}`
  18. try {
  19. const r = await axios.get(url, {
  20. proxy: false,
  21. httpsAgent: new https.Agent({
  22. rejectUnauthorized: false
  23. })
  24. })
  25. if (!r || r.data?.code !== 0 || !r.data?.url) {
  26. this.logger.error(`获取聚合登录链接失败!${r.data?.msg || 'api接口错误'}`)
  27. return res.json({
  28. ...BaseStdResponse.ERR,
  29. msg: '请尝试其他登录方式或稍后再试'
  30. })
  31. }
  32. res.json({
  33. ...BaseStdResponse.OK,
  34. data: r.data.url
  35. })
  36. } catch (error) {
  37. this.logger.error(`获取聚合登录链接失败!${error.message || 'api接口错误'}`)
  38. return res.json({
  39. ...BaseStdResponse.ERR,
  40. msg: '请尝试其他登录方式或稍后再试!'
  41. })
  42. }
  43. }
  44. }
  45. module.exports.GetLoginUrl = GetLoginUrl;