権限 API

メモ: この機能はウェブワーカー内で利用可能です。

権限 API は、現在のコンテキストに起因する API の利用許可の状態を照会するための一貫したプログラム方法を提供します。例えば、権限 API を使用して、特定の API にアクセスするための権限が付与 (granted) または拒否 (denied) されているかどうかを確認できます。

この API による権限は、API が安全なコンテキストで使用されるための要件、文書に適用される権限ポリシーの制限、ユーザーへのプロンプトなど、コンテキストのすべてのセキュリティ制限を効果的に集約します。 例えば、API が権限ポリシーによって制限されている場合、返される権限は denied となり、ユーザーにはアクセス許可を求めるプロンプトは表示されません。

概念と使い方

従来は、様々な API が独自の権限を一貫性のない方法で扱ってきました。例えば、通知 API は権限の状態の明示的なチェックと権限の要求を許可しますが、位置情報 API はできません(ユーザーが最初の権限の要求を拒否すると問題を引き起こします)。権限 API は、権限に関する限り、開発者がより良いユーザーエクスペリエンスを実装できるようにするためのツールを提供します。

permissions プロパティが Navigator オブジェクトで利用可能になり、標準の閲覧コンテキストとワーカーコンテキスト(WorkerNavigator — したがって、ワーカー内で権限の確認が可能)の両方で、権限 API 機能へのアクセスを提供する Permissions オブジェクトを返します。

このオブジェクトを取得した後は、Permissions.query() メソッドを使用して特定の API の PermissionStatus で解決されるプロミスを返すなど、権限関連のタスクを実行できます。 なお、状態が prompt の場合、ユーザーは機能にアクセスする前にプロンプトを確認する必要があります。また、このプロンプトの起動メカニズムは、特定の API に依存します。これは、権限 API の一部として定義されていません。

権限 API が使える API

すべての API の権限の状態が権限 API を使用して照会できるわけではありません。 権限に対応している注目すべき API には次のようなものがあります。

Location Finder という簡単な例を用意しました。 例をライブで実行するか、Github でソースコードを見ることができます。

それがどのように機能するかについてもっと読むには 権限 API の使用を見てください。

インターフェイス

Permissions

権限の照会や取り消しのためのメソッドなど、コアとなる Permission API 機能を提供します。

PermissionStatus

権限の現在の状態、および権限の状態の変更に応答するためのイベントハンドラーへのアクセスを提供します。

他のインターフェイスへの拡張

それぞれメインコンテキストとワーカーコンテキストから Permissions オブジェクトへのアクセスを提供します。

仕様書

Specification
Permissions

ブラウザーの互換性

api.Permissions

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Permissions
accelerometer permission
Experimental
accessibility-events permission
DeprecatedNon-standard
ambient-light-sensor permission
Experimental
background-sync permission
Experimental
camera permission
clipboard-read permission
ExperimentalNon-standard
clipboard-write permission
Experimental
compute-pressure permission
Experimental
geolocation permission
gyroscope permission
Experimental
local-fonts permission
Experimental
magnetometer permission
Experimental
microphone permission
midi permission
notifications permission
payment-handler permission
Experimental
persistent-storage permission
push permission
screen-wake-lock permission
storage-access permission
top-level-storage-access permission
Experimental
window-management permission
Experimental
query
request
Experimental
requestAll
ExperimentalNon-standard
revoke
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

api.Navigator.permissions

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
permissions

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

api.WorkerNavigator.permissions

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
permissions

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

関連情報