からめもぶろぐ。

SharePoint が得意なフレンズなんだね!すごーい!

Azure Active Directory の OAuth v2.0 で Device Flow が使えるようになりました

すっかり情報を見落としていたのですが、MSAL.NET 2.2.0 が 2018/10/5 にリリースされ v2.0 で Device Flow がサポートされるようになりました。*1

github.com

UI を出せないアプリケーションでは (Password Credentials を使うという手もなくはないですが) この機能は必須なので、これまで仕方なく v1.0 を使っていたアプリケーションでも、v2.0 に移行できるようになるのでありがたいですね。

ちなみに Fiddler で中身をのぞいてみました。ちゃんと /oauth2/v2.0/devicecode になっていますね。

*1:なお 2018/10/24 時点での最新は 2.3.0 です。

Office 365 日本リージョンで Microsoft Graph data connect を実行するとエラーになる

ここ数日 Microsoft Graph data connect を試そうと思っていろいろやってみたのですがどうにもうまくいかないということで。

現在 OfficeDev の GitHub リポジトリにはセットアップの手順とサンプルの ARM Template が公開されています。

github.com

また microsoftgraph の GitHub リポジトリにはトレーニング用のコンテンツが公開されています。

github.com

頑張って英語を読み解きながらどちらの手順を試してみたもののできませんでした。発生したエラーについては以下の通り。Office 365 への承認までは通るのですがその後で固まってしまう感じ。

Error: Office365 data loading failed to execute. Failed to extract data from Office 365 for Tenant and dataset BasicDataSet_v0.Contact_v0 into AzureBlobStorage

仕方がないので開発チームにメールを投げてみることに。次の日には返事がきました。どうも Office 365 のリージョンと Blob Storage のリージョンの組み合わせが正しくないとエラーになるとのこと。

github.com

そして日本リージョンがない件。さらに突っ込んで聞いてみたところ、日本リージョンではまだサポートされておらず、2019 年前半には日本 (Office 365) - 東日本 (Azure) で使えるようになるそうです。それまではアジア太平洋 (Office 365) - 東南アジア (Azure) を使って欲しいとのことでした。とりあえず日本で試すことができるのはまだまだ先のようですね。

Microsoft Graph でも SharePoint リスト アイテムの複数の値を持つ列が更新できない

SharePoint REST API の時代からですが複数の値を持つ列 (MultiChoice、UserMulti、LookupMulti) を更新できないという問題がありました。英語フォーラムの情報を見てもできるという情報もあったりできないという情報があったりして錯綜しているのですが、少なくとも私が試した限りでは解決できていません。

具体的には以下のようなリクエストを投げると

POST https://example.sharepoint.com/_api/web/lists('<ListId>')/items(<ItemId>)
Authorization: Bearer <AccessToken>
Accept: application/json; odata=verbose
Content-Type: application/json; odata=verbose

{
    "__metadata": {
        "type": "SP.ListItem"
    },
    "ChoiceField": {
        "results": [
            "Test Value"
        ]
    }
}

400 エラーが返ってきます。*1

Microsoft.SharePoint.Client.InvalidClientQueryException: A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value. *2

これ Microsoft Graph で改善してるのかなと思ってふと試したところ全然治っていないみたいです。

{
    "error": {
        "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
        "message": "A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value.",
    }
}

まあ Microsoft Graph は SharePoint REST API をラップしているだけなので当たり前といえば当たり前なのですが、悲しい気持ちになりましたというお話。

*1:ちなみに例外として null を入れると 200 が返ってきます。つらい。

*2:型名のない値が見つかりましたが、使用できる必要な型がありません。モデルが指定されている場合、ペイロード内の値ごとに、ペイロードで指定できる型が必要です。その型は、呼び出し元による明示的な型か、親値から暗黙的に推定される型にすることができます。

Microsoft Ignite 2018 で Microsoft Graph のアップデートが発表されました

Microsoft Ignite 2018 でさまざまな発表がありましたが Microsoft Graph についてもアップデートがありました。詳細は Office 365 Blog で公開されています。

developer.microsoft.com

簡単にアップデートの内容を見ていきます。

Managed access to Microsoft Graph (preview)

Microsoft Graph に対する大規模なデータアクセスを行うようなアプリケーション (主に分析用を想定しているみたい) の場合に、セキュリティの問題が出てくるので、Azure Data Factory と Azure Managed Applications を使って管理されたアクセス (Microsoft Graph data connect) ができるようにしましょうというもの。Azure Data Factory と Azure Managed Applications が全然わからないのですが、いったん Microsoft Graph で取得できるデータを Blob にコピーしてアクセスさせるみたいですね。

Notifications (preview)

すべてのデバイス (Windows, iOS, Android) に通知を送るための API です。というか今まで通知 API はなかったんですね。

Dynamics is now in Microsoft Graph (preview)

Dynamics のエンドポイントが追加されました。これは恩恵を受ける人が多そうな感じがします。

Tools for IT pros & admins

PowerApps から Microsoft Graph を使うためのサンプルとテンプレートです。

Security & Identity

セキュリティまわりはよくわからないです…。

Intune

Intune の API がいろいろ増えていますよという話。

Microsoft Teams, Messages, Calendars, Files, and Folders

既存の API の拡張ですが大事なことが割とさらっと書いてあります。

Teams の新機能 タブ作成 API によりチームにタブを展開できる (preview)
通話とオンライン会議 API でボットが作成できる (preview)
SharePoint の新機能 ページ API によりページの管理ができる (preview)
リスト ビュー API によりビューの管理ができる (preview)
OneDrive の新機能 フォローしているコンテンツの管理ができる (preview)
ファイルの一括移動とコピーができる (preview)
Outlook の新機能 メッセージにカスタムヘッダーを追加できる (GA)
Mail Tips API によりメールの受信者情報の取得ができる (GA)
予定表の空き時間を取得できる (preview)

Tools & capabilities for developers (preview)

Microsooft Graph が OpenAPI (Swagger) に対応しました。これまでドキュメントを見なければならなかったので開発生産性が上がるかもしれません。

github.com

SharePoint Framework 1.6 がリリースされました

2018/09/05 に SharePoint Framework 1.6 がリリースされました。

developer.microsoft.com

大きなアップデートとしては、SharePoint Framework 1.4.1 で追加された、Microsoft Graph (MSGraphClient) および Azure Active Directory 認証で保護されたカスタム Web API (AadHttpClient) のサポートが GA (一般提供) になりました。MSGraphClient と AadHttpClient のいずれも @microsoft/sp-http に入っているようですね。
GraphHttpClient については過去の記事で紹介しています。

blog.karamem0.jp