健全性检查 Microsoft Graph API 并从 Postman 生成 OAuth 令牌
Sanity Check Microsoft Graph API and Generating OAuth Token from Postman
我正在针对 Microsoft Graph API
进行编码,并且我正在尝试证明生成 OAuth 令牌的能力。我正在使用 Postman 并将我的应用程序托管在 Azure Active Directory
上。当我尝试传递正确的 Scopes
时,我 运行 在 Postman 中遇到了一个问题 - 我正在尝试传递 User.read
但是,Postman 没有生成令牌。
我的设置:
授权 URL: https://login.windows.net/{my_tenent}/oauth2/authorize
访问URL:https://login.windows.net/{my_tenent}/oauth2/token
范围:User.readAll
这些是要传递以生成 OAuth 令牌的正确值吗?
您确定将您的应用程序设置为请求对 Microsoft Graph 的权限吗?
"permissions to other applications" 部分。您必须静态 select 您希望应用程序调用 Microsoft Graph 的范围,除非您使用的是支持动态许可的 V2 终结点。
如果有帮助请告诉我!
我为同样的问题苦苦挣扎了将近一天,才终于弄明白了。这些是适合我的设置:
- 代币名称:[任何你想要的]
- 授权 Url: https://login.windows.net/common/oauth2/authorize?resource=https://graph.microsoft.com
- 访问令牌URL:https://login.windows.net/common/oauth2/token?resource=https://outlook.office365.com/(尽管我认为刷新不起作用)
- 客户端 ID:[您应用的客户端 ID]
- 客户端密码:[您应用的客户端密码]
- 范围:我这里有一堆范围,但它们似乎被忽略了。应在应用程序控制台中设置范围
- 授权类型:授权码
- 勾选"Request access token locally"
如果一切正常,您应该会在单击 "Request Token"
时看到登录屏幕
听起来您在这里混合了一些 v1 和 v2 端点。我写了一份 Microsoft v2 Endpoint Primer 可能对您有所帮助。
用于 v2 身份验证的 URI 应该是 https://login.microsoftonline.com/common/oauth2/v2.0/
而不是 https://login.windows.net/{my_tenent}/oauth2/authorize
。
使用 Graph 请求范围时,请确保使用完整的 URI 而不仅仅是范围名称本身。例如,user.read
应请求为 https://graph.microsoft.com/user.read
。多个范围是 space 分隔的,因此请求 user.read
和 mail.read
将被格式化为 "https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read
.
如果您更愿意使用 v1 端点,则不要将范围请求作为 OAUTH 工作流程的一部分。对于 v1,范围是在您注册应用程序时在 Azure Active Directory 中定义的。
如果您不确定使用哪个,请查看 Deciding between the Azure AD and Azure AD v2.0 endpoints。一般来说,我倾向于推荐 v2,因为它最终将取代遗留的 v1 实现。然而,有一些较旧的 API(EWS、SfB 等)目前仅支持 v1,因此在某些情况下,您的选择是为您做出的。
我正在针对 Microsoft Graph API
进行编码,并且我正在尝试证明生成 OAuth 令牌的能力。我正在使用 Postman 并将我的应用程序托管在 Azure Active Directory
上。当我尝试传递正确的 Scopes
时,我 运行 在 Postman 中遇到了一个问题 - 我正在尝试传递 User.read
但是,Postman 没有生成令牌。
我的设置:
授权 URL: https://login.windows.net/{my_tenent}/oauth2/authorize
访问URL:https://login.windows.net/{my_tenent}/oauth2/token
范围:User.readAll
这些是要传递以生成 OAuth 令牌的正确值吗?
您确定将您的应用程序设置为请求对 Microsoft Graph 的权限吗?
"permissions to other applications" 部分。您必须静态 select 您希望应用程序调用 Microsoft Graph 的范围,除非您使用的是支持动态许可的 V2 终结点。
如果有帮助请告诉我!
我为同样的问题苦苦挣扎了将近一天,才终于弄明白了。这些是适合我的设置:
- 代币名称:[任何你想要的]
- 授权 Url: https://login.windows.net/common/oauth2/authorize?resource=https://graph.microsoft.com
- 访问令牌URL:https://login.windows.net/common/oauth2/token?resource=https://outlook.office365.com/(尽管我认为刷新不起作用)
- 客户端 ID:[您应用的客户端 ID]
- 客户端密码:[您应用的客户端密码]
- 范围:我这里有一堆范围,但它们似乎被忽略了。应在应用程序控制台中设置范围
- 授权类型:授权码
- 勾选"Request access token locally"
如果一切正常,您应该会在单击 "Request Token"
时看到登录屏幕听起来您在这里混合了一些 v1 和 v2 端点。我写了一份 Microsoft v2 Endpoint Primer 可能对您有所帮助。
用于 v2 身份验证的 URI 应该是 https://login.microsoftonline.com/common/oauth2/v2.0/
而不是 https://login.windows.net/{my_tenent}/oauth2/authorize
。
使用 Graph 请求范围时,请确保使用完整的 URI 而不仅仅是范围名称本身。例如,user.read
应请求为 https://graph.microsoft.com/user.read
。多个范围是 space 分隔的,因此请求 user.read
和 mail.read
将被格式化为 "https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read
.
如果您更愿意使用 v1 端点,则不要将范围请求作为 OAUTH 工作流程的一部分。对于 v1,范围是在您注册应用程序时在 Azure Active Directory 中定义的。
如果您不确定使用哪个,请查看 Deciding between the Azure AD and Azure AD v2.0 endpoints。一般来说,我倾向于推荐 v2,因为它最终将取代遗留的 v1 实现。然而,有一些较旧的 API(EWS、SfB 等)目前仅支持 v1,因此在某些情况下,您的选择是为您做出的。