在我的java应用程序中,我希望通过使用jakarta访问用户邮箱。为此,我遵循了https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth的OAuth2授权代码流。
在Azure端口上,我设置了我的应用程序并添加了API权限,如下所示

现在,用户重定向到以下授权端点:
输入凭据并接受同意后,redirect_uri会被auth代码击中。基于这段代码,我形成了令牌端点URL并从服务器访问它,令牌端点如下所示:
网址:https://login.microsoftonline.com/5426ee07-9b73-4a9e-8075-395ab439c6fa/oauth2/v2.0/token
表格数据:
client_id=b6067ad9-7195-430b-a35d-97b7aa7beb8f
scope=offline_access%20https%3A%2F%2Foutlook.office.com%2FIMAP.AccessAsUser.All
redirect_uri=http://localhost:8080/callback/microsoft
grant_type=authorization_code
client_secret=QUs8Q~aboLBiopTezMTKwzQjIwWsFFXjc2kCRaRs (I know I have shared the secret)
code={code received from authorize end point}对这一职位请求的答复如下:
{“错误”:“invalid_grant”,"error_description":"AADSTS65001:用户或管理员未同意使用ID‘b 6067ad9-7195-430 b-a35d-97b7a7beb8f’命名为“电子邮件连接器”的应用程序。发送该用户和资源的交互式授权请求。\r\n跟踪ID: dc008ced-e23f-4919-bd45-b7ae7c68b000\r\nCorrelation ID: 9b6ede03-3c05-4a78-8975-036a3cb20773\r\nTimestamp: 2022-06-07 19:51:30 Z,"error_codes":65001,“时间戳”:“2022-06-07 19:51:30 Z”,"trace_id":"dc008ced-e23f-4919-bd45-b7ae7c68b000","correlation_id":"9b6ede03-3c05-4a78-8975-036a3cb20773",“子错误”:“consent_required”}
在这里,我不明白为什么错误说用户或管理员没有同意使用应用程序,用户在授权终结点输入凭据后接受了同意。如果我们查看上面的屏幕截图,管理员已经给出了访问目录的权限。
发布于 2022-06-08 09:42:21
我尝试在我的环境中复制相同的场景,并得到了如下相同的错误:

若要解决错误authorize endpoint,请检查用于获取代码的。
https://login.microsoftonline.com/Your_TenantID/oauth2/v2.0/authorize?
client_id=Your_ClientID
&response_type=code
&redirect_uri=http://localhost:8080/callback/microsoft
&response_mode=query
&scope= offline_access https://outlook.office.com/IMAP.AccessAsUser.All
&state=12345从上面的授权端点获取code。
我在修改端点之后成功地获得了访问令牌,如下所示:

验证访问令牌的在 https://jwt.io/ 中对其进行解码,并检查https://jwt.io/和声明,如下所示:

https://stackoverflow.com/questions/72539933
复制相似问题