0

Microsoft Office 365의 내 관리자 계정에서 내 조직의 다른 사용자 캘린더에 액세스하려고합니다. Office 365에서 해당 캘린더를 검색하고 액세스 할 수 있습니다. Microsoft Graph API를 사용하여 이러한 (다른 사용자의) 일정에 액세스하려고합니다. 다음은 Graph API를 사용하여 Office 365 달력에 액세스하기위한 공식 문서입니다. 헤더와 함께그래프 API에서 액세스가 거부되었거나 발견되지 않음 오류 Office 365의 다른 사용자 액세스 캘린더

https://graph.microsoft.com/v1.0/users 쿼리 나 전부를 보여주는 : 여기

1. Calendars from Users 2. Directly Access Calenders

내 인증 도우미 클래스가있는 내 권한을 정의하고있다

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 

노력 우편 배달부 스코프 사용자이지만

GET/users/{id | userPrincipalName}/캘린더 나를 보여주는 404 찾을 수 없음 오류.

은 한마디로 말하면, 나는 나의 마이크로 소프트 오피스 365 응용 프로그램의 검색 창에서 다른 사용자의 일정에 액세스 할 수 있지만

any of these methods 사용하여 액세스 할 수 없습니다.

답변

0

사용자 컨텍스트 (예 : 서비스/데몬 앱) 외부에서 실행되는 앱만 조직의 모든 캘린더에 액세스 할 수있는 것처럼 보입니다. Getting access tokens for apps that run without the presence of a signed-in user is a bit different이며 모든 사용자의 캘린더에 앱 액세스 권한을 부여하려면 관리자 동의 흐름을 따라야합니다. 방금 테스트 한 결과 Calendars.Read이 필요한 유일한 범위입니다.

enter image description here

단계는 다음과 같습니다

  1. 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
같은 URL로 이동하여 앱 응용 프로그램 권한
  • 부여 관리자의 동의로 Calendars.Read을 추가하여 앱
  • 등록

    일단 액세스 토큰을 얻으면

    GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars/[calendar-id]/events

    : 당신은 달력 아이디가 있으면

    GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars

    당신이 그들의 캘린더 이벤트를 볼 수 있습니다, 다른 사용자의 일정에 액세스 할 수있는 나머지 통화는 질문에 게시 정확히이었다 Graph explorer에서 캘린더 샘플을 보시기 바랍니다.

    enter image description here