#node.js #express #microsoft-graph-api #onedrive
#node.js #экспресс #microsoft-graph-api #onedrive
Вопрос:
Я пытаюсь получить доступ к 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. Пожалуйста, добавьте фактический
access_token
к вашему вопросу. Без него это будет очень сложно диагностировать.
Ответ №1:
Вы еще не совсем закончили с вашим потоком аутентификации, код, который вы получаете обратно, — это код аутентификации, а не токен. Это очень важное различие.
Первым шагом в потоке кода OAuth является получение кода, что вы и сделали. Затем вам нужно «обменять» этот код на фактический токен. Для этого вам нужно отправить еще один запрос на сервер с этим кодом и запросить ваш токен. Этот запрос должен перейти на другой URL. Здесь есть много подробных объяснений для потока, который вы используете сейчас https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
И здесь для неявного потока, если вы хотели использовать это вместо этого: https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow
Вы также можете изучить возможность использования AdalJS или preview MSAL.js библиотека чтобы справиться с большей частью проверки подлинности для вас, это библиотеки, созданные Корпорацией Майкрософт.