Поток кода API Onedrive / Azure для аутентификации отправляет меня на мой URL-адрес перенаправления, но не дает мне код, прикрепленный к URL

#oauth-2.0

#oauth-2.0

Вопрос:

https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth?view=odsp-graph-online#step-1-get-an-authorization-code

Я выполнил этот шаг до конца, успешно вошел в систему, был перенаправлен, и нет кода с URL-адресом перенаправления, как обещает руководство. Следующая ссылка — это моя версия с учетными данными. https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=a383dd3b-8306-4902-93d3-f5a33fe4a445amp;scope=Files.Readamp;response_type=codeamp;redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient

Я попадаю на эту страницу и вхожу в учетную запись в том же пространстве имен. Просмотр входа в систему

После входа в надлежащий логин все, что я получаю взамен, перенаправляется на мой URI перенаправления без кода, прикрепленного к концу, как указано в руководстве. Все, что мне нужно, это доступ к 3 файлам на моем onedrive, но, похоже, я не могу пройти мимо OAuth2. Вот на что я перенаправляюсь. https://login.microsoftonline.com/common/oauth2/nativeclient

Комментарии:

1. PS Я удалил приложение, поскольку это всего лишь тестовое приложение. Я запустил новое тестовое приложение и все еще получаю тот же результат.

Ответ №1:

С первого взгляда кажется, что redirect_uri неверен. Это должна быть конечная точка, где вы получаете код авторизации, а затем обмениваете его для остальной части процесса OAuth.

Я работаю с Pathfix, и мы решаем проблему управления токенами OAuth с использованием бессерверной инфраструктуры.

Подводя итог, вот как должен выглядеть ваш URL-адрес

  https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=a383dd3b-8306-4902-93d3-f5a33fe4a445amp;
scope=https://graph.microsoft.com/Files.ReadWrite.All offline_accessamp;
response_type=codeamp;
redirect_uri=https://your endpoint
  

Дополнительное примечание о области применения. Обратите внимание, что определение области для токена должно быть таким, как я указал выше

Комментарии:

1. Спасибо, я понял эту часть. Теперь у меня проблема с тем, что это правительственная учетная запись. Я получаю сообщение об ошибке «Конфиденциальный клиент не поддерживается в кросс-облачном запросе». когда я передаю код с URL-адреса и запрашиваю данные. support.microsoft.com/en-us/help/4458250 /. … Я последовал этому руководству, но безуспешно.

2. Можете ли вы принять ответ и задать новый вопрос, может быть, будет какое-то обсуждение правительственной учетной записи. Я прочитаю и свяжусь с вами

3. У меня всего 11 репутаций, поэтому я не могу проголосовать, но я понял это пару недель назад и объяснил разницу в государственных учетных записях.

Ответ №2:

Все это работает одинаково. Я просто убедился, что мое приложение открыто для всех пользователей, и заменил .com на .us во всех ссылках, кроме uri перенаправления. Надеюсь, это поможет кому-то еще. Например, мои данные находятся в sharepoint, но microsoft graph api работает одинаково для всех учетных записей с различиями в .us, .com и некоторых других.