Commit 9c7e7d70 authored by Aivs's avatar Aivs

feat:调试基本接口

parent 2d73f11e
......@@ -74,6 +74,7 @@
"ts-pnp": "1.2.0",
"typescript": "^4.2.3",
"url-loader": "4.1.1",
"vconsole": "^3.10.1",
"webpack": "4.44.2",
"webpack-dev-server": "3.11.1",
"webpack-manifest-plugin": "2.2.0",
......@@ -89,8 +90,8 @@
"react-app",
"react-app/jest"
],
"rules":{
"jsx-a11y/anchor-is-valid":"off"
"rules": {
"jsx-a11y/anchor-is-valid": "off"
}
},
"browserslist": {
......
......@@ -28,6 +28,13 @@
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
<script
src="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/3.0.0/vconsole.min.js"
type="text/javascript"
></script>
<script>
var vConsole = new VConsole();
</script>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
......
......@@ -30,7 +30,7 @@ interface AuthResponse extends Response {
interface TicketRes {
meta: {
nonceStr: string,
noncestr: string,
timestamp: number,
url: string,
},
......
......@@ -2,7 +2,8 @@ import axios from 'axios'
// 后端地址
// const baseURL = 'http://192.168.30.239:5000'
const baseURL = 'https://base.exploring.cn/wecom-server'
const baseURL = 'https://base.exploring.cn/test-engine-user-center'
// const baseURL = 'https://base.exploring.cn/wecom-server'
// 创建 axios 实例
const api = axios.create({
......@@ -47,24 +48,24 @@ export const fetchExternalChat = async (externalChatId: string) => {
// 根据 code 换取 userId,作为用户身份验证
export const fetchUserId = async (code: string) => {
const response = await api.get<AuthResponse>('/api/qywx-proxy/user/getuserinfo', {
params: {
code
}
})
return response.data.UserId;
// const response = await api.get<AuthResponse>('/api/qywx-proxy/user/getuserinfo', {
const response = await api.get('/user_center/getWxUserInfo', {
params: {
code
}
})
return response.data.data;
}
// 获取签名
export const fetchSignatures = async () => {
const response = await api.get<TicketRes>('/api/qywx-utils/signatures', {
const response = await api.get('/user_center/signatures', {
params: {
url: window.location.href
}
})
return response.data;
// alert(JSON.stringify(response))
return response.data.data;
}
export default api
.flex{
display: flex;
justify-content: space-between;
align-items: center;
}
.more{
width:30px;
height:30px;
}
\ No newline at end of file
......@@ -19,6 +19,7 @@ const AppWrapper = (
</ConfigProvider>
)
// ReactDOM.render(AppWrapper, document.getElementById('root'))
console.log(config, fetchUserId, mockUserId)
checkRedirect(config, fetchUserId, mockUserId)
.then(() => initSdk(config, fetchSignatures))
.then(() => ReactDOM.render(AppWrapper, document.getElementById('root')))
......@@ -50,6 +50,7 @@ const apis: wx.Api[] = [
'wwapp.getOpenData',
'wwapp.initWwOpenData',
'getCurExternalChat',
"getContext"
];
export default apis;
......@@ -8,7 +8,7 @@ const fakeValue: Record<string, any> = {
};
// 根据外部判断是否为 mock 环境
const isWindowMock = window.isMock === true;
const isWindowMock = window.isMock === false;
// 根据宿主环境判断是否要 mock
const isHostMock = navigator.userAgent.toLowerCase().includes('chrome')
&& !navigator.userAgent.toLowerCase().includes('wxwork')
......
......@@ -27,7 +27,6 @@ const generateOAuthUrl = (config: Config) => {
return `${key}=${value}`;
})
.join('&');
return `https://open.weixin.qq.com/connect/oauth2/authorize?${search}#wechat_redirect`;
};
......@@ -35,7 +34,11 @@ const generateOAuthUrl = (config: Config) => {
* 判断当前网页是否需要重定向
*/
const checkRedirect = async (config: Config, getUserId: GetUserId, mockUserId?: string) => {
// debugger
if (isMock) {
// let code='NWFkfNeQ1EgBc1Ay35wBwoIayUK1NWsCseiFT56VDoo'
// const newUserIds = await getUserId(code)
// 使用 mock 的 userId
if (mockUserId) {
Cookies.set('userId', mockUserId);
......@@ -44,7 +47,6 @@ const checkRedirect = async (config: Config, getUserId: GetUserId, mockUserId?:
}
const userId = Cookies.get('userId')
const unAuth = !userId || userId === 'undefined' || userId === 'null'
const codeExist = window.location.search.includes('code');
......@@ -57,10 +59,9 @@ const checkRedirect = async (config: Config, getUserId: GetUserId, mockUserId?:
// 判断是否需要重新获取 userId
if (unAuth) {
const code = qs.parse(window.location.search.slice(1)).code as string
const newUserId = await getUserId(code)
Cookies.set('userId', newUserId)
const newUserId:any = await getUserId(code)
Cookies.set('userInfo', newUserId)
Cookies.set('userId', newUserId.userid)
}
};
......
......@@ -15,21 +15,31 @@ export type GetSignatures = () => Promise<TicketRes>
*/
const initSdk = async (config: Config, getSignatures: GetSignatures) => {
const { corpId, agentId } = config;
// 获取 ticket
const signaturesRes = await getSignatures();
console.log(signaturesRes)
// alert('signaturesRes '+JSON.stringify(signaturesRes))
const configRes = await jsSdk.config({
beta: true,
debug: true,
appId: 'ww25792c97eaa37ba7',
timestamp: signaturesRes.meta.timestamp,
nonceStr: signaturesRes.meta.noncestr,
signature: signaturesRes.corp.signature,
jsApiList: apis,
})
console.log(configRes+"configRes")
const agentConfigRes = await jsSdk.agentConfig({
corpid: corpId,
agentid: agentId,
timestamp: signaturesRes.meta.timestamp,
nonceStr: signaturesRes.meta.nonceStr,
nonceStr: signaturesRes.meta.noncestr,
signature: signaturesRes.app.signature,
jsApiList: apis,
}).catch(e => {
console.error(e)
console.log('错误信息'+JSON.stringify(e))
});
console.log('agentConfig res', agentConfigRes);
wx.error(console.error);
......
import * as React from 'react'
import {useEffect, useState} from 'react'
import {fetchExternalUser} from '../api'
import {jsSdk} from "../index";
import {jsSdk} from "../index"
import {Button, message, Spin} from "antd";
// 性别Map
const genderMap = ['未定义', '男', '女']
const ExternalUser: React.FC = () => {
const [loading, setLoading] = useState<boolean>(true)
const [externalUser, setExternalUser] = useState<ExternalUserResponse['external_contact'] | void>()
const getExternalUserInfo = async () => {
const res = await jsSdk.invoke<{ userId?: string }>('getCurExternalContact', {})
// alert(JSON.stringify(res))
if (!res || !res.userId) return
console.log('外部联系人 ID', res.userId);
......
import React, {FC, useEffect, useState} from "react";
import Cookies from "js-cookie";
import {fetchUser} from "../api";
import {Spin} from "antd";
import {Spin,Button} from "antd";
import { SearchOutlined } from '@ant-design/icons';
import './../css/home.css'
const Home: FC = () => {
const [loading, setLoading] = useState<boolean>(false);
......@@ -10,11 +12,11 @@ const Home: FC = () => {
// 获取当前外部联系人信息
const getUserInfo = async () => {
setLoading(true);
const userId = Cookies.get('userId')
// const userId = Cookies.get('userId')
const userInfo:any = Cookies.get('userInfo')
// const userInfo = await fetchUser(userId || '')
const userInfo = await fetchUser(userId || '')
setUser(userInfo)
setUser(JSON.parse(userInfo))
setLoading(false)
}
......@@ -25,7 +27,17 @@ const Home: FC = () => {
return (
<Spin spinning={loading}>
<div>
<h1>欢迎回来,{user ? user.name : ''}</h1>
<h1>欢迎回来,{user ? user.name: ''}</h1>
</div>
<div className="flex">
<span>用户看板</span>
<Button type="primary" icon={<SearchOutlined />}>查找客户</Button>
</div>
<div className="custom">
<div className="flex">
<p>客户信息</p>
<img src="./../assets/images/js.png" className="more" alt="" />
</div>
</div>
</Spin>
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment