Я хочу убедиться, что мои учетные данные для аутентификации OAuth 2.0. Итак, у меня есть client_id, client_secret, tenant_id, scope, token_url и auth_url. Я использую стороннее приложение для отправки электронной почты, но получаю сообщение об ошибке в части OAuth 2.0 как ошибка неверного запроса для token_url.
В этом случае, когда grant_type='client_credentials'
, как я могу исправить домены или субдомены token_url?
-> token_url like that https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token
Если вы доминируете в этой теме, не могли бы вы упомянуть о процессе OAuth 2.0?
Я попытался изменить параметр grant_type как client_credentials. По умолчанию было «refresh_token».
В этом случае он вернулся, как эта ошибка:
(530, b'5.7.57 Client not authenticated to send mail. Error: 535 5.7.3 Authentication unsuccessful [ZR2P278CA0041.CHEP278.PROD.OUTLOOK.COM 2023-02-14T08:10:26.343Z 08DB0DEF6EA5D39B]', '[email protected]')
2023-02-14 11:10:26,378 INFO [decorators] [send_email] StatusMessage: An error occurred while sending the email: (530, b'5.7.57 Client not authenticated to send mail. Error: 535 5.7.3 Authentication unsuccessful [ZR2P278CA0041.CHEP278.PROD.OUTLOOK.COM 2023-02-14T08:10:26.343Z 08DB0DEF6EA5D39B]', '[email protected]')
2023-02-14 11:10:26,379 INFO [decorators] [send_email] StatusMessage: Done with sending email...
Итак, в чем основная проблема в данном случае?
Спасибо за внимание,
Я попытался воспроизвести то же самое в своей среде и получил следующие результаты:
Я создал приложение Azure AD и предоставил согласие администратора на разрешение Mail.Send
API:
В зависимости от ваших требований вы можете использовать поток учетных данных клиента или поток кода авторизации.
Я сгенерировал токен доступа через Client Credential Flow, используя следующие параметры:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default
grant_type:client_credentials
Чтобы отправить почту, я использовал следующий запрос:
https://graph.microsoft.com/v1.0/users/FromAddress/sendMail
{
"message": {
"subject": "Test mail",
"body": {
"contentType": "Text",
"content": "Test"
},
"toRecipients": [
{
"emailAddress": {
"address": "****"
}
}
],
"ccRecipients": [
{
"emailAddress": {
"address": "****"
}
}
]
},
"saveToSentItems": "false"
}
Ссылка:
пользователь: sendMail - Microsoft Graph v1.0 | Обучение Майкрософт
Спасибо за быстрый ответ и полезный контент. Кроме того, в моем случае для использования моего стороннего приложения также требуется SMTP-сервер. Каким должен быть SMTP-сервер? Я использую smtp.office365.com. А также в этой ситуации я получаю сообщение об ошибке типа «Аутентификация не удалась» и «Клиент не прошел проверку подлинности для отправки почты». Есть ли у вас какие-либо предложения в этом вопросе?