我正在使用 Office 365 和 Sharepoint 2013 API。我正在使用 Azure AD 对用户进行身份验证,并在 AAD 内设置了一个测试应用程序,该应用程序在 Sharepoint 2013 的配置选项卡中设置为启用的所有委派权限。我正在从本机 android 应用程序进行这些调用,并且能够成功使用此 oauth 授权 URL 与 Microsoft 的 ADAL(ActiveDirectoryAuthenticationLibrary) 进行身份验证:https ://login.windows.net//oauth2/token?api-version=1.0. 然后,我访问我的测试共享点站点,并使用我从使用 ADAL 收到的 Oauth 令牌获取包含 https:////_api/Web/Lists?getByTitle('')/Items 的列表。这一切都很好,但是当我尝试使用相同的令牌进程访问社交 API 时,我得到了 401 Unauthorized。我用来获取当前用户信息的网址是:https:////_api/social.following/my。我做错了什么导致列表 api 工作和社交 api 失败?任何帮助是极大的赞赏!
问问题
392 次
1 回答
0
您是否在调用该资源之前为该资源请求一个新令牌?
ADAL 库必须为您请求的每个资源获取一个新的访问令牌。如果您使用新的资源端点调用acquireToken(),我们的库会自动为新的访问令牌赎回刷新令牌。这在 API 文档中有所暗示。
例子:
mAuthContext = new AuthenticationContext(ToDoActivity.this, Constants.AUTHORITY_URL,
false);
mAuthContext.acquireToken(activity, resource, clientId, redirectUri, loginHint, prompt, extraQueryParameters, callback)
//do work with the token
// now get token for new_resource
mAuthContext.acquireToken(activity, new_resource, clientId, redirectUri, loginHint, prompt, extraQueryParameters, callback)
您可以在这里使用一个示例来帮助您了解如何做到这一点:https ://github.com/AzureADSamples/NativeClient-Android
于 2014-09-14T07:04:32.630 回答