page.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React from 'react';
  2. import './index.less';
  3. import Page from '@src/containers/Page';
  4. import { asyncSMessage } from '@src/services/AsyncTools';
  5. import { WechatH5AppId, H5Url } from '../../../../Constant';
  6. import { User } from '../../../stores/user';
  7. export default class extends Page {
  8. init() {
  9. const { code, state = '' } = this.props.core.query;
  10. const [scope, jump] = state.split('|');
  11. if (code) {
  12. User.loginWechat(code, !!scope).then((info) => {
  13. if (!info.id && !scope) {
  14. this.redirect('snsapi_userinfo', jump || '1|/');
  15. } else if (info.bindMobile) {
  16. replaceLink(jump || '/');
  17. } else {
  18. replaceLink(`/bind?jump=${encodeURIComponent(jump)}`);
  19. }
  20. })
  21. .catch(e => {
  22. asyncSMessage(e.message, 'error');
  23. });
  24. } else {
  25. this.redirect('snsapi_base', '|/');
  26. }
  27. }
  28. redirect(scope, state) {
  29. const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${WechatH5AppId}&redirect_uri=${encodeURIComponent(
  30. `${H5Url}/login`,
  31. )}&response_type=code&scope=${scope}&state=${encodeURIComponent(state)}#wechat_redirect`;
  32. window.location.href = url;
  33. }
  34. renderView() {
  35. return <div />;
  36. }
  37. }