Могу ли я использовать тип разрешения владельца пароля вместо кода авторизации в nodejs ms-graph аутентификации? - PullRequest
0 голосов
/ 02 февраля 2020

Я следовал учебнику по Node.js Календарю Outlook и получил все для отличной работы! Удивительная документация. Для моего конкретного приложения я хочу, чтобы пользователи могли бронировать встречи (т.е. создавать события в календаре Outlook). У пользователя, очевидно, не будет моей информации для входа в систему, поэтому для получения токена доступа я использую Тип разрешения владельца пароля Oauth2 вместо использования кода авторизации. Я делаю это, пытаясь позволить пользователю создавать события в моем календаре, не предоставляя им свои учетные данные Outlook. Вот как выглядит код:

async function getTokenFromCode() {                                  
let result;                                                          
try {
    result = await oauth2.ownerPassword.getToken({
    username: "myEmail@outlook.com",
    password: "myPassword",
    //code: auth_code,
    //redirect_uri: process.env.REDIRECT_URI, 
    scope: process.env.APP_SCOPES //Same as in tutorial with the addition of Calendar.ReadWrite
  });
  console.log("Owner password result: ", result);
  //console.log(result);
  const token = oauth2.accessToken.create(result);
  console.log("Token created: ", token.token);
  saveValuesToCookie(token, res);
  return token.token.access_token; }                              
catch (error) {
  console.log("Error on auto sign in: ");
  console.log(error);                                                
  }                                                                 
} 

Но когда я делаю это, я получаю следующую ошибку:

Error on auto sign in: Error: Response Error: 400 Bad Request at internals.Client._shortcut (/home/pascal/node-outlook-tutorial/node-tutorial/node_modules/@hapi/wreck/lib/index.js:643:11) at processTicksAndRejections (internal/process/task_queues.js:94:5) at async Client.request (/home/pascal/node-outlook-tutorial/node-tutorial/node_modules/simple-oauth2/lib/client.js:35:20) at async Object.getTokenFromCode (/home/pascal/node-outlook-tutorial/node-tutorial/helpers/auth.js:58:14) at async /home/pascal/node-outlook-tutorial/node-tutorial/routes/authorize.js:16:13.

Включено ли разрешение владельца пароля на конечной точке графа Microsoft? И если это не так, каковы были бы мои альтернативы в построении системы бронирования встреч с использованием календаря перспектив?

...