我想从Microsoft Office 365上的管理员帐户访问我的组织的其他用户日历。在Office 365上,我可以搜索并访问这些日历。 我想使用Microsoft Graph API访问这些(其他用户的)日历。 以下是使用Graph API访问Office 365日历的官方文档。 1. Calendars from Users 2. Directly Access Calenders
这是我的Auth Helper类,我在其中定义了我的权限范围
module AuthHelper
CLIENT_ID = '91e6****-****-40f7-9b46-******d1149c'
CLIENT_SECRET = 'pftjo*******55;hwSN2-(%'
SCOPES = [ 'openid',
'profile',
'User.Read',
'Mail.Read',
'Calendars.Read',
'Calendars.Read.Shared' ]
def get_login_url
client = OAuth2::Client.new(CLIENT_ID,
CLIENT_SECRET,
:site => 'https://login.microsoftonline.com',
:authorize_url => '/common/oauth2/v2.0/authorize',
:token_url => '/common/oauth2/v2.0/token')
login_url = client.auth_code.authorize_url(:redirect_uri => authorize_url, :scope => SCOPES.join(' '))
end
def get_token_from_code(auth_code)
client = OAuth2::Client.new(CLIENT_ID,
CLIENT_SECRET,
:site => 'https://login.microsoftonline.com',
:authorize_url => '/common/oauth2/v2.0/authorize',
:token_url => '/common/oauth2/v2.0/token')
token = client.auth_code.get_token(auth_code,
:redirect_uri => authorize_url,
:scope => SCOPES.join(' '))
end
尝试邮递员:
https://graph.microsoft.com/v1.0/users 查询以及向我显示所有用户的标题
GET / users / {id | userPrincipalName} / calendars 查询显示404 Not Found错误。
简而言之,我可以从office365应用程序的搜索栏访问其他用户的日历,但无法使用
访问答案 0 :(得分:0)
看起来只有在用户上下文之外运行的应用程序(如服务/守护程序应用程序)才能访问组织中的每个日历。 Getting access tokens for apps that run without the presence of a signed-in user is a bit different并且您需要通过管理员同意流程才能让您的应用访问每个人的日历。我刚刚对此进行了测试,Calendars.Read
是您需要的唯一范围。
步骤如下:
Calendars.Read
作为申请许可https://login.microsoftonline.com/{REPLACE WITH TENANT}/adminconsent?nonce=graph&prompt=select_account&client_id={REPLACE_WITH_APP_ID}&response_type=token&redirect_uri=https://localhost:3001&state=foobar
一旦我获得了访问令牌,其余用户访问其他用户日历的呼叫正是您在问题中发布的内容:
GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars
获得日历ID后,您可以在以下位置查看其日历活动:
GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars/[calendar-id]/events
我建议您在Graph explorer中查看我们的日历示例。