我在通过Microsoft Graph API访问我的office 365帐户时遇到了一个(或两个)问题。
第一个问题是我有一个java程序,它试图列出office365订阅中的所有用户。我打电话给https://graph.microsoft.com/v1.0/users/
,但返回403禁止
。
在应用注册中,我添加了权限,包括 User.Read
、User.ReadBasic.All、User.ReadWrite
对委派权限和应用权限。
我也尝试使用图形资源管理器,但是当我输入使用我的帐户时,它仍然使用内置的图形用户,并且不显示我的应用程序登录信息。不确定这些是否相关。
下面是导致 403 的代码片段
AuthenticationResult result = getAccessTokenFromUserCredentials(RESOURCE_GRAPH, ID, PASSWORD);
URL url = new URL("https://graph.microsoft.com/v1.0/users/") ;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Bearer "+result.getAccessToken());
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
下面是获取令牌的方法
private static AuthenticationResult getAccessTokenFromUserCredentials(String resource,
String username, String password) throws Exception {
AuthenticationContext context;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
Future<AuthenticationResult> future = context.acquireToken(
resource, CLIENT_ID, username, password,
null);
result = future.get();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException(
"authentication result was null");
}
return result;
}
好吧,我想我应该把答案贴出来。首先,也是最令人困惑的是apps.dev.microsoft。com注册似乎不起作用(尽管我使用的是V2.0endpoint和版本2库)。
然而,当我直接使用azure门户注册应用程序时,这就解决了问题。我随后能够正确访问该服务。
似乎很奇怪,尽管身份验证/授权服务是我的应用程序的标准配置,并且非常适合访问Sharepoint / One Drive等,但是,当想要访问用户endpoint时,只有在 portal.azure.com 中注册时,它才会起作用。
非常感谢大家的帮助。
应用程序在apps.dev.microsoft中注册。com与v2.0endpoint一起使用。请单击此处了解有关v2.0endpoint的更多详细信息。
您可以使用v2.0身份验证协议和Azure Active Directory v2.0身份验证库获取令牌。在身份验证期间,您需要对用户. ReadBasic. All权限进行用户同意或管理员同意。同意后,访问令牌包括该委托权限,并将在调用列表用户操作时工作。
我想从我的Ruby应用程序中访问Calendar rest API。我已经创建了azure多租户应用程序,并对其进行了配置。 我尝试获取对资源“https://outlook.office365com/”的访问令牌,但出现错误 我找不到这个错误的任何描述,也不明白为什么它被禁用 以下是我的azure应用程序权限:
我倾向于使用图形用户 API 从 Office365 获取所有管理员用户。但管理员用户的用户类型为空。因此,我无法应用过滤器用户类型 eq null。是否有任何选项可以仅获取管理员用户?https://graph.microsoft.com/v1.0/users?$filter=userType eq 空 错误响应:
我使用委托权限来获得访问令牌授权。用户是全局管理员 权限范围是offline_访问用户。读写。所有文件。读写。所有 我请求API获取相同的租户子用户驱动器文件 https://graph.microsoft.com/v1.0/users/xxx/drive/root/children 返回访问拒绝 https://graph.microsoft.com/v1.0/me/drive/root/chi
当我使用graph explorer(https://developer.microsoft.com/en-us/graph/graph-explorer)调用graph API(如teams API)时,它会自动为我提供一个访问令牌,该令牌具有执行任务(如创建团队和添加人员)的权限和身份验证。
我目前正在facebook上测试我的应用程序,试图访问我的账户地址。 在graph explorer中,它表示: 字段为空或被访问令牌禁止。 我检查了所有的访问权限,并在我的个人资料中输入了一个地址。 有什么建议吗? 电子邮件
我有一个新的Office365 Small Business订阅,想知道如何最好地将联系人与自定义的内部数据库应用程序同步。 因此,如果我想通过Azure Active Directory图形客户端库访问Office365帐户中的Azure Active Directory,我应该在哪里注册应用程序,获取密钥--以及连接到哪个主机?