dingtalk.ts 895 B

12345678910111213141516171819202122232425262728
  1. import * as dd from 'dingtalk-jsapi';
  2. /**
  3. * 获取钉钉免登授权码
  4. * @param {string} corpId 企业的corpId (可选,如果不传则尝试从环境或URL获取)
  5. * @param {string} clientId 应用的clientId (可选,如果不传则从环境获取)
  6. */
  7. export function getDingTalkAuthCode(corpId?: string, clientId?: string) {
  8. return new Promise<string>((resolve, reject) => {
  9. // 钉钉环境判断
  10. if (dd.env.platform === 'notInDingTalk') {
  11. reject(new Error('请在钉钉客户端打开'));
  12. return;
  13. }
  14. // @ts-ignore 新版写法,可能类型定义未及时更新
  15. dd.requestAuthCode({
  16. corpId: corpId || '',
  17. clientId: clientId || import.meta.env.VITE_DINGTALK_CLIENTID || '',
  18. onSuccess: (result: { code: string }) => {
  19. resolve(result.code);
  20. },
  21. onFail: (err: any) => {
  22. reject(err);
  23. }
  24. });
  25. });
  26. }