Я получаю код аутентификации для графа Microsoft, но когда я пытаюсь его использовать, ответ InvalidAuthenticationToken - PullRequest
2 голосов
/ 15 апреля 2019

Я пытаюсь получить доступ к onedrive через API.Мне удалось получить acces_token с областью files.readwrite.Когда я тогда пытаюсь получить доступ к https://graph.microsoft.com/v1.0/me., он отвечает с ошибкой «InvalidAuthenticationToken».Что я делаю не так

Я пробовал несколько разных URL, например "https://graph.microsoft.com/v1.0/me/drive/root/children", и искал stackoverflow, но ничего не помогло.

router.get('/response', function(req, res, next){
// already got code here.
  var code = req.query.code
  request.post({
    url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded'},
    form: {

        client_id: client_id,
        redirect_uri: redirect_uri,
        client_secret: client_secret,
        code: code,
        grant_type: 'authorization_code',
    },
  },function(error, response, body){
      if (error){
        console.log(error)
      } 
      //so far so good. The access_token from the response looks okay and the 
      //scope is correct as well

        request.get({
            url: 'https://graph.microsoft.com/v1.0/me',
            headers: {
                'Authorization': "Bearer " + JSON.parse(body).access_token,
            },
      }, function(er, re, bo) {
          //this response is an error message
          console.log(bo)
        });

  });
})

Я ожидалполучить запрос с информацией о onedrive, но я получил сообщение об ошибке.

1 Ответ

0 голосов
/ 16 апреля 2019

Вы еще не закончили с вашим потоком аутентификации, код, который вы получаете, - это код аутентификации, а не токен.Это очень важное различие.

Первый шаг в потоке кода oAuth - получение кода, который вы сделали.Затем вам нужно «обменять» этот код на настоящий токен.Для этого вам необходимо отправить еще один запрос на сервер с этим кодом и запросить свой токен.Этот запрос должен перейти на другой URL.Здесь есть много подробных объяснений для потока, который вы сейчас используете https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

А здесь для неявного потока, если вы хотите использовать его вместо этого: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow

ВыВозможно, вы захотите изучить использование библиотеки AdalJS или предварительного просмотра библиотеки MSAL.js, чтобы выполнить большую часть аутентификации за вас, это библиотеки, созданные Microsoft.

...