的验证Office 365的REST API

问题描述:

我尝试使用Office365 REST API列出用户的文件(OneDrive for Business或SharePoint Online中),它可以访问Office365管理员帐户,的验证Office 365的REST API

但是当我尝试访问其他正常活跃用户(由Office 365管理中心的管理员帐户创建),无法登录,OAuth页面显示“对不起,但我们在登录时遇到问题。我们收到了错误的请求。

请求标题:

POST https://login.microsoftonline.com/common/login HTTP/1.1 
Accept: */* 
Cookie: flight-uxoptin=true; stsservicecookie=ests; x-ms-gateway-slice=productiona 
Referer: https://login.microsoftonline.com/common/oauth2/authorize?client_id=2d4d11a2-f814-46a7-890a-274a72a7309e&response_type=code&redirect_uri=https%3A%2F%2Fwww.contoso.com%2Fcontoso.htm&resource=https%3A%2F%2Fapi.office.com%2Fdiscovery%2F 
Accept-Language: en-US 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) 
Host: login.microsoftonline.com 
Content-Length: 1032 
Connection: Keep-Alive 
Cache-Control: no-cache 

[email protected]&passwd=contoso&ctx=rQIIAdNiNtQztFIxNjY3S00yT9NNTLM01zUxMzLWTUoBcpMMTBOTTZMMTdOSE4uEuAT6rjdUsz8977Uh-YA6807eOasYNTJKSgqKrfT1y8vL9coz86oyC_SS83P1k3PyS1OKU4vKMpNTi_UySnJ3MDJeYGR8wch4i4nf37G0JMMIROQXZValPsIQmcTMn58IEtEDkcn5KamrmBVhNiUWZOrlp6UBDQbblJJZnJxfllpUqb-JmQ0okJuft4tZxSTJ2MTI2NxI18DQwkjXxNI8WdcyOTlR19jCxNLA0Nw4MTEl5QYz4wUWxl2cRPsBAA2&flowToken=AAABAAEAiL9Kn2Z27UubvWFPbm0gLRx6Haiauf3FLxlg3g9UORjSbd3XCCl2tfMhe0xEbC2UOYMMPyfYW9aXLIkJZC5nAK7l4G0_2DB-BItK0rx9ueogAA&n1=109320&n2=-1442391510000&n3=-1442391510000&n4=109320&n5=109320&n6=109320&n7=109320&n8=NaN&n9=109320&n10=110226&n11=111404&n12=111404&n13=111406&n14=113261&n15=27&n16=113500&n17=113502&n18=113511&n19=1235&n20=1&n21=0&n22=0&n23=0&n24=0&n25=0&n26=0&n27=0&n28=0&n29=-1442391623258&n30=-1442391623258&n31=0&n32=0&n33=0&n34=0&n35=0&n36=0&n37=0&n38=0&n39=0&n40=0&n41=0&n42=1442391623292&n43=1442391623511&type=11&LoginOptions=3&NewUser=1&idsbho=1&PwdPad=&sso=&vv=&uiver=1&i12=1&i13=MSIE&i14=9.0&i15=520&i16=770&i20= 

响应头:

HTTP/1.1 200 OK 
Cache-Control: no-cache, no-store 
Pragma: no-cache 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: -1 
Vary: Accept-Encoding 
Server: Microsoft-IIS/8.5 
x-ms-request-id: ab3393a8-0cde-4767-bd12-a2f4cd0be32c 
client-request-id: 7b80d78e-e507-4acf-b063-c02703b90d9c 
x-ms-gateway-service-instanceid: ESTSFE_IN_164 
X-Content-Type-Options: nosniff 
Strict-Transport-Security: max-age=31536000; includeSubDomains 
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" 
Set-Cookie: x-ms-gateway-slice=productiona; path=/; secure; HttpOnly 
Set-Cookie: stsservicecookie=ests; path=/ 
X-Powered-By: ASP.NET 
Date: Wed, 16 Sep 2015 08:20:32 GMT 
Content-Length: 2206 

我按照下面的OAuth流 https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx

任何想法是什么问题以及如何能解决吗?我真的很感谢有人的帮助。非常感谢!

+0

你可以分享你正在使用的平台和你的认证码吗?您发布的这些登录值只是占位符,对不对?你实际上没有发送[email protected]? –

最后,我发现在吹塑链接

http://blog.beecomedigital.com/2015/06/08/aadsts90093-calling-principal-cannot-consent-due-to-lack-of-permissions/

BTW, 这是很难理解为什么没有在OAuth页任何其它的错误消息显示“错误的请求”消息的解决方案。

在我的情况下,这是导致此问题的范围参数丢失。看起来您在发送授权请求时必须包含范围。