如何使用Azure应用程序代表用户发送电子邮件?
我尝试使用Open Graph从Azure Web App代表用户发送电子邮件。电子邮件必须使用office365邮件服务器发送,并应保存在用户发送的邮箱中。上述应用程序只能由授权用户访问,授权使用以下端点执行:如何使用Azure应用程序代表用户发送电子邮件?,azure,azure-web-app-service,microsoft-graph-api,user-permissions,Azure,Azure Web App Service,Microsoft Graph Api,User Permissions,我尝试使用Open Graph从Azure Web App代表用户发送电子邮件。电子邮件必须使用office365邮件服务器发送,并应保存在用户发送的邮箱中。上述应用程序只能由授权用户访问,授权使用以下端点执行: https://login.microsoftonline.com/{tennantid}/oauth2/authorize?response_type=code+id_token&redirect_uri={domain}.auth%2Flogin%2Faad%2Fcallb
https://login.microsoftonline.com/{tennantid}/oauth2/authorize?response_type=code+id_token&redirect_uri={domain}.auth%2Flogin%2Faad%2Fcallback&client_id={clientId}&scope=openid+profile+email&response_mode=form_post
https://graph.microsoft.com/v1.0/me/sendMail
用户登录后,我将获取访问令牌,以便进一步请求打开图形:
https://login.microsoftonline.com/{tennantid}/oauth2/v2.0/token
grant_type "client_credentials"
client_secret "{clientSecret}"
client_id "{clientId}"
scope "https://graph.microsoft.com/.default"
接下来,我将发布到sendMail端点:
https://login.microsoftonline.com/{tennantid}/oauth2/authorize?response_type=code+id_token&redirect_uri={domain}.auth%2Flogin%2Faad%2Fcallback&client_id={clientId}&scope=openid+profile+email&response_mode=form_post
https://graph.microsoft.com/v1.0/me/sendMail
并传递必要的参数,以及在上一步检索accessToken的授权承载{accessToken}
头。这将返回一个错误:
"code":"NoPermissionsInAccessToken","message":"The token contains no permissions, or permissions can not be understood."
至于权限,应用程序已为mail.send设置了委派权限,以便它只能代表登录用户发送电子邮件。应用程序在登录时未向用户请求权限,未提供任何许可
在深入研究文档并花了相当长的时间之后,我不知道如何使其工作,因此任何提示都将受到感谢。当您使用客户端凭据授予类型时,您将获得应用程序令牌,并且需要为其设置应用程序令牌 API不知道这里的/me是什么意思,因为它是一个客户端凭据流 如果要使用客户端凭据流,则要发送邮件,需要以这种方式指定调用 因此,请添加邮件。在Azure中发送应用程序权限,如下面的屏幕截图所示,然后拨打上述电话
您还可以使用您的访问令牌验证您是否有权限。如果我不想授予Applicaton以任何用户身份发送的权限,该怎么办?在这种情况下还有其他解决方案吗?@jacek_podwysocki要代表任何用户发送邮件,您应该使用应用程序权限,如果您使用委托权限,则需要使用用户上下文流,如授权代码流等。,用户需要登录,然后邮件将代表登录用户发送,在这种情况下,您将使用/me/sendMail调用。