M365関連 プログラム 技術

C#・PowerShellで会議室のイベントを取得(委任されたアクセス許可版)<実行編>

前回の記事
C#・PowerShellで会議室のイベントを取得(委任されたアクセス許可版)<準備編> - ナストンのまとめ
C#・PowerShellで会議室のイベントを取得(委任されたアクセス許可版)<準備編> - ナストンのまとめ

以前、MicroSoftGraphAPIをアプリケーション認証で実施する方法を記載しましたが、場合によってはセキュリティ ...

続きを読む

前回、ユーザー認証でアクセストークンを取得できるように設定できたので、それを使用して実際に会議室の情報を取得していきます

アクセストークンを取得する

まず、アクセストークンを取得する際に使用するテナントIDは以下の値を使用します

アプリケーションのIDは以下の値を使用します

アクセストークン取得時に以下の画像にある、権限名が必要となります

上記のそれぞれの値をセットし、アクセストークンを取得する方法は以下の通りになります
アクセストークンを取得する際に使用するユーザーは二段階認証の設定がないものを使用しないとエラーとなります

$tenantName = "前回作成したアプリのあるテナントID"
$clientUserid = "前回作成したアプリのID"
$clientUserSecret = "前回作成したアプリのクライアントシークレットキーの値"
$userName = "認証時に使用するユーザーアドレス(二段階認証のかかっていないもの)"
$userPass = "$userNameのパスワード"

# アクセストークン取得用データ
$ReqUserTokenBody = @{
    Grant_Type    = "password"
    username      = $userName
    password      = $userPass
    client_Id     = $clientUserid
    Client_Secret = $clientUserSecret
    Scope         = "Calendars.Read Calendars.Read.Shared" # Azureアプリに含まれていないとエラーが発生する

}

これで以下のようにアクセストークンを取得できます

実際に会議室の情報を取得する

ここからはアプリケーション認証版と変わりはありません

startDateTime(取得開始日時)とendDateTime(取得終了日時)は必須の項目でフォーマットは【yyyy-MM-ddTHH:mm:ss】となります。また、今回は会議名、会議開始時間、会議終了時間、主催者、参加者のみのプロパティを取得するようにしています。

上位10件しかデータ取得できないので「@odata.nextLink」というプロパティがあれば、そのプロパティには次の10件の取得用URLが記載されているのでそこに再度Getリクエストを投げとデータ取得できます

while ($true) {
    $User_Data = Invoke-RestMethod -Headers @{Authorization = "Bearer $($TokenUserResponse.access_token)"} -Uri $apiUrl -Method Get
    $User_Calendars = ($User_Data | select-object Value ).Value
    $User_Calendars

    $NextLink = $User_Data.'@odata.nextLink'
    $apiUrl = $NextLink
    if ($null -eq $NextLink) {
        break;
    }
}

最後に

これで会議室の情報を取得できるようになりました。取得できる項目等を確認するために以下のサイトであらかじめテストができます。また、今回作成したコード(C#・PowerShell)をGitHubにアップしていますので参考にしてください

サンプル
BlogSampleCodeProjects/MicroSoftGraphAPI_Delegated at main · nasuton/BlogSampleCodeProjects · GitHub
BlogSampleCodeProjects/MicroSoftGraphAPI_Delegated at main · nasuton/BlogSampleCodeProjects · GitHub

Project for sample code used in the blog.(Blogで記載しているサンプルコード ...

続きを読む

-M365関連, プログラム, 技術
-, , ,