Php 请求访问资源时出错AADSTS50020https://graph.windows.net/

Php 请求访问资源时出错AADSTS50020https://graph.windows.net/,php,azure,oauth,office365,azure-active-directory,Php,Azure,Oauth,Office365,Azure Active Directory,。我正在尝试在我的PHP web应用程序上实现“使用O365帐户登录”功能 当我的应用程序请求访问Graph API资源时(https://graph.windows.net/),似乎只有管理员才能允许访问。如果非管理员试图完成OAuth工作流,则他们会从login.windows.net获得以下错误: AADSTS50020: This operation can only be performed by an administrator. Sign out and sign in as an

。我正在尝试在我的PHP web应用程序上实现“使用O365帐户登录”功能

当我的应用程序请求访问Graph API资源时(
https://graph.windows.net/
),似乎只有管理员才能允许访问。如果非管理员试图完成OAuth工作流,则他们会从login.windows.net获得以下错误:

AADSTS50020: This operation can only be performed by an administrator. Sign out and sign in as an administrator or contact one of your organization's administrators.
我并不是真的想访问目录中所有用户的详细信息(我可以理解这样的要求管理员权限的信息),而是当前登录用户(管理员或非管理员)的姓名/电子邮件


因此,我需要基本上任何O365用户能够允许我的应用程序读取他们的基本配置文件信息。Graph API是正确的方法吗?要实现这一点,我需要采取哪些不同的措施?

如果将“scope=openid”添加到OAuth令牌请求中,来自AAD的响应应该包含一个“id\u令牌”密钥。该键的值是一个未签名的JWT令牌,在该令牌中,您可以找到有关用户的以下属性(如果这些属性在目录中可用):

  • oid=目录对象ID
  • tid=用户是其成员的租户id GUID
  • iss=发行人
  • upn
  • 电子邮件
  • 主题
  • 姓名
注意:与基本OAuth令牌响应一起返回的id_令牌是未签名的令牌。它不应与OpenID Connect协议响应中返回的签名id_令牌混淆。绝对不应将其用于做出身份验证决策。这纯粹是信息性的