我们有一个网站(建立在
PHP框架上),我们为教师/学生提供在线教育工具.我们已经与google.com进行了OAuth集成,用户可以使用他们的Google帐户“注册”并“登录”我们的网站(可以是个人Gmail帐户,也可以是Google Apps域的成员).
我们正在尝试与O365进行类似的集成,我们的网站可以向O365询问用户的电子邮件和姓/名,以便我们可以在我们的网站上为他们创建帐户,一旦创建帐户,就将其登录.我们创建了Azure中的应用程序列表 – > Active Directory,并生成了客户端ID和密码,并将它们插入到PHP代码中. OAuth工作流程described here一直工作到我尝试使用POST请求到https://login.windows.net/common/oauth2/token请求访问令牌.它重定向回我的redirect_uri但不是给我授权代码,它在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
默认情况下,已注册的应用程序配置为请求“读取用户的配置文件”,一旦得到用户同意,允许应用获取用户令牌(如果使用OpenID Connect则为ID令牌)并读取已登录用户的配置文件(包括调用
Azure AD Graph API时,他们的邮件地址或地址.Active AD保护的应用程序当前必须预先配置他们需要的权限范围(作为应用程序注册体验的一部分,在“其他应用程序的权限”部分下).
在这里,您似乎已将Outlook.com指定为您希望代码和访问令牌的资源,但您的应用未配置为允许访问O365 Outlook.com/Exchange Online.
在这里,您似乎已将Outlook.com指定为您希望代码和访问令牌的资源,但您的应用未配置为允许访问O365 Outlook.com/Exchange Online.
请尝试将您的请求中的资源设置为Azure AD – https://graph.windows.net/.这应该适合您.然后,您可以交换访问令牌的代码以调用Azure AD Graph API.
希望这可以帮助