use*_*957 9 php oauth azure office365 azure-active-directory
我们有一个网站(建立在PHP框架上),我们为教师/学生提供在线教育工具.我们已经与google.com进行了OAuth集成,用户可以使用他们的Google帐户"注册"和"登录"我们的网站(可以是个人Gmail帐户,也可以是Google Apps域的成员).
我们正在尝试与O365进行类似的集成,我们的网站可以向O365询问用户的电子邮件和姓/名,以便我们可以在我们的网站上为他们创建帐户,并在创建帐户后将其登录.我们创建了Azure中的应用程序列表 - > Active Directory,并生成了客户端ID和机密,并将它们插入到PHP代码中.此处描述的OAuth工作流程一直有效,直到我尝试使用POST请求https://login.windows.net/common/oauth2/token请求访问令牌.它重定向回我的redirect_uri但不是给我auth代码,它在URL中给了我这些参数:
[error] => access_denied
[error_description] => AADSTS65005: The client application has requested access to resource 'https://outlook.office365.com/'. This request has failed because the client has not specified this resource in its requiredResourceAccess list.
Trace ID: xxxxxx
Correlation ID: xxxxxx
Timestamp: 2014-09-29 06:28:25Z
[state] => xxxxxx
Run Code Online (Sandbox Code Playgroud)
我需要的只是O365给我用户的电子邮件和f/l名称.当然有一个快速修复,我错过了?
Dan*_*SFT 13
默认情况下,已注册的应用程序配置为请求"读取用户的配置文件",一旦得到用户同意,允许应用获取用户令牌(如果使用OpenID Connect则为ID令牌)并读取已登录用户的配置文件(包括调用Azure AD Graph API时的邮件地址或地址.Azure AD保护的应用程序当前必须预先配置他们需要的权限范围(作为应用程序注册体验的一部分,在"其他应用程序的权限"部分下).在这里,您似乎已将Outlook.com指定为您希望代码和访问令牌的资源,但您的应用未配置为允许访问O365 Outlook.com/Exchange Online.
请尝试将您的请求中的资源设置为Azure AD - https://graph.windows.net/.这应该为你工作.然后,您可以交换访问令牌的代码以调用Azure AD Graph API.
希望这可以帮助