Я создаю календарь React, который берет данные из «Календаря Microsoft Outlook», используя клиентский JavaScript SDK «hello.js» и Microsoft Graph (для настройки я также следовал этому руководству: https://docs.microsoft.com/en-us/graph/auth-register-app-v2).
Используя hello.login, мое приложение показывает календарь без каких-либо проблем ... но, к сожалению, мне приходится показывать его без сеанса входа в систему.
Это мой код:
class CalendarView extends Component {
constructor(props) {
super(props);
hello.init({
microsoft: {
id: APP_ID,
oauth: {
version: 2,
auth: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
},
scope_delim: ' ',
form: false,
scope: SCOPES,
},
});
const { startDate, endDate } = this.props;
this.state = {
// events: [],
startDataTime: startDate.toISOString(),
endDataTime: endDate.toISOString(),
token: hello('microsoft').getAuthResponse().access_token,
};
}
В этом другом компоненте я управляю запросом Microsoft Graph:
class EventsList extends Component {
constructor() {
super();
this.state = {
events: [],
};
}
componentWillReceiveProps(nextProps) {
const { startDate, endDate, token } = nextProps;
// to know what is the Bearer toke
// -> https://stackoverflow.com/questions/25838183/what-is-the-oauth-2-0-bearer-token-exactly
axios.get(
`https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=${startDate}&enddatetime=${endDate}&orderby=start/dateTime`,
{ headers: { Authorization: `Bearer ${token}` } },
).then(response => this.setState({ events: response.data.value }))
.catch((error) => {
console.log(error.response);
});
}
render() {
const { events } = this.state;
if (events !== null) return events.map(event => <EventList key={event.id} event={event} />);
return null;
}
}
Странно то, что если я создаю console.log (токен), приложение показывает мне токен, но в то же время я получаю ошибку «GET ... 401 (Unauthorized)».
токен журнала консоли и сообщение об ошибке
Это мое приложение:
Собственность приложения, часть 1
Собственность приложения, часть 2
Может проблема в вызове Hello.js? Я тестирую свое приложение с помощью Jest, и у меня есть эта ошибка, может ли она быть связана с моей проблемой?
console.error node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [TypeError: hello is not a function]
Как я могу решить?