次の方法で共有


OneDrive と SharePoint の短い共有リンク形式

OneDrive と SharePoint 内の共有ファイルと共有フォルダーへのリンクが短くなり、その形式が新しくなりました。 たとえば、組織内のすべてのユーザーに対して機能する OneDrive リンクの古い形式と新しい形式を以下に示します。


古いリンク形式 新しいリンク形式
https://contoso-my.sharepoint.com/personal/john_contoso_com/_layouts/15/guestaccess.aspx?share=ERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw https://contoso-my.sharepoint.com/:w:/p/john_contoso_com/ERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw

注:

この変更が導入される前に共有されていたリンクは、変更の影響を受けず、そのまま機能します。

新しいリンク形式は、OneDrive または SharePoint の URL 構造を検査または利用するアプリケーションまたはサービスに影響します。具体的には、これらのアプリケーションまたはサービスがサイトの URL または特定の文字列を解析する場合です。 新しい短いリンクは、guestaccess.aspx リンクと連動するすべての API と互換性があります。

この変更の影響を受ける一部のシナリオを以下に示します。

  • エンドユーザーがサイトの URL を取得して GetFileByUrl や GetSharingLinkData などの SharePoint REST API 要求を作成するために入力した URL を解析するアプリケーション。

  • エンドユーザーからの URL 入力を取得して、CSOM を使用してファイル情報を問い合わせるアプリケーション。

  • エンドユーザーが、匿名なのか、社内専用の共有リンクなのかを判断するために入力した URL を解析するアプリケーション。

Microsoft Graph を使用して SharePoint リンクを操作するアプリはそのまま機能します。 詳細については、「共有 DriveItems へのアクセス」を参照してください。

SharePoint REST API

SharePoint REST API では、ユーザー入力リンクを操作する方法がサポートされていません。 可能であれば、Microsoft Graph 共有 API に移行することをお勧めします。

Microsoft Graph に移行できない場合は、次の回避策を利用することができます。 この回避策はサポートされていないことに注意してください。

  1. ベース URL を特定します。 これはリンクのホスト名になりました。

  2. 次のように、ベース URL、SP.RemoteWeb、および特定の API メソッドを連結して API 要求を作成します。

    {hostname}/_api/SP.RemoteWeb(@a)/web/{specific_api_here}?@a='{url_encoded_link}'

たとえば、次の入力 URL の場合を示します。

https://contoso-my.sharepoint.com/personal/john_contoso_com/_layouts/15/guestaccess.aspx?share=ERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw

元の API 要求:

https://contoso-my.sharepoint.com/personal/john_contoso_com/_api/web/GetFileByUrl(@url)?@url='https%3A%2F%2Fcontoso-my.sharepoint.com%2Fpersonal%2Fjohn_contoso_com%2F_layouts%2F15%2Fguestaccess.aspx%3Fshare%3DERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw

新しい API 要求:

https://contoso-my.sharepoint.com/_api/SP.RemoteWeb(@url)/web/GetFileByUrl(@url)?@url='https%3A%2F%2Fcontoso-my.sharepoint.com%2Fpersonal%2Fjohn_contoso_com%2F_layouts%2F15%2Fguestaccess.aspx%3Fshare%3DERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw

特定の種類のリンクを確認するには、GetSharingLinkData API に対する応答に含まれる IsSharingLink フィールドと IsAnonymous フィールドを検査します (例の GetFileByUrlGetSharingLinkData に置き換えます)。 guestaccess.aspx などのトークンの URL を解析する代わりに、この方法を使用します。

SharePoint CSOM

CSOM では、ユーザー入力リンクを操作する方法がサポートされていません。 一部のアプリケーションは、ClientContext を開いて、ClientContext コンストラクターが成功するまで SharePoint リンクからパスのセグメントを切り捨て続けることにより、ファイル メタデータを問い合わせます。 このアプローチは、新しい URL 形式では動作しません。

これを回避するには、次のようにします。

  1. ルート サイト (scheme://hostname) で ClientContext を開きます。

  2. Web.WebUrlFromPageUrlDirect() を呼び出してリンクの Web URL を取得します。

  3. 追加の要求を発行するには、この Web URL を使用して新しい ClientContext を開きます。

注:

このアプローチはサポートされていません。