Всякий раз, когда я пытаюсь аутентифицировать OneDrive API, он просит меня войти в свою учетную запись Microsoft, но разве это не противоречит цели API?
Я перенаправляю свой скрипт на URL кода авторизации, который должен возвращать уникальный код для запроса токена доступа. Он работает нормально, когда я вошел в свою учетную запись Microsoft, но когда я не вошел в систему, он показывает мне страницу входа Microsoft.
URL-адрес, который я использую,
https://login.live.com/oauth20_authorize.srf?client_id=MYCLIENTID&scope=onedrive.readwrite offline_access onedrive.readonly onedrive.appfolder&response_type=code&redirect_uri=MYREDIRECTURL
РЕДАКТИРОВАТЬ
Вот код PHP, который я использую для перенаправления
$auth_code_url = 'https://login.live.com/oauth20_authorize.srf?client_id='.$od_app_id.'&scope=onedrive.readwrite offline_access onedrive.readonly onedrive.appfolder&response_type=code&redirect_uri='.$url_website;
header("Location: ".$auth_code_url); exit();
API позволяет вам управлять файлами пользователя от его имени, он не создает учетную запись OneDrive для вашего приложения / службы.
Чтобы управлять файлами пользователя, они должны авторизовать вас для этого. Концептуально это означает, что пользователь общается с login.live.com и говорит: «Я UserX, вот мое доказательство». Затем login.live.com возвращает им маркер со словами «Мы считаем, что этот пользователь — UserX». Затем пользователь предоставляет этот токен вашему сервису, чтобы при отправке запросов OneDrive вы могли предоставить токен, чтобы сказать «UserX дал мне разрешение на управление своими файлами».
Если пользователь уже вошел в систему, в его браузере уже сохранен файл cookie для аутентификации, поэтому login.live.com вернет код / токен без запроса входа в систему. Если пользователь не вошел в систему, login.live.com (а также ваш сервис) не знает, кто этот пользователь. Поэтому необходимо показать экран входа в систему, чтобы получить / проверить личность пользователя, чтобы вы знали, чьи файлы нужно изменить.
Других решений пока нет …