Permissions API

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

概念と使い方

歴史的に異なる API は独自のパーミッションを一貫性のない方法で扱います。 例えば、Notifications API はパーミッションの状態の明示的なチェックとパーミッションの要求を許可しますが、Geolocation API はできません(ユーザーが最初のパーミッションの要求を拒否すると問題を引き起こします)。 Permissions API は、パーミッションに関する限り、開発者がより良いユーザーエクスペリエンスを実装できるようにするためのツールを提供します。

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

このオブジェクトを取得した後は、Permissions.query() メソッドを使用して特定の API の PermissionStatus で解決される Promise を返すなど、パーミッション関連のタスクを実行できます。

Permissions API を使用してすべての API のパーミッションの状態を照会できるわけではありません。 Permissions に対応している注目すべき API は次のとおりです。

今後、より多くの API が Permissions API のサポートを取得する予定です。

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

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

インターフェイス

Navigator.permissionsWorkerNavigator.permissions 読取専用
それぞれメインコンテキストとワーカーコンテキストから Permissions オブジェクトへのアクセスを提供します。
Permissions
パーミッションの照会や取り消しのためのメソッドなど、コアとなる Permission API 機能を提供します。
PermissionStatus
パーミッションの現在の状態、およびパーミッションの状態の変更に応答するためのイベントハンドラーへのアクセスを提供します。

仕様書

仕様書 状態 備考
Permissions 草案 初期定義

ブラウザーの互換性

Permissions インターフェイス

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
PermissionsChrome 完全対応 43Edge 完全対応 79Firefox 完全対応 46IE 未対応 なしOpera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 46Opera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
accelerometer permissionChrome 完全対応 62Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0
accessibility-events permissionChrome 完全対応 62Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0
ambient-light-sensor permissionChrome 完全対応 62Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0
background-sync permissionChrome 完全対応 62Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0
camera permissionChrome 完全対応 64Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 9.0
clipboard-read permissionChrome 完全対応 64Edge 完全対応 79Firefox 未対応 なしIE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 9.0
clipboard-write permissionChrome 完全対応 64Edge 完全対応 79Firefox 未対応 なしIE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 9.0
geolocation permissionChrome 完全対応 43Edge 完全対応 79Firefox ? IE 未対応 なしOpera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
gyroscope permissionChrome 完全対応 51Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 51Chrome Android 完全対応 51Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
magnetometer permissionChrome 完全対応 62Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0
microphone permissionChrome 完全対応 64Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 9.0
midi permissionChrome 完全対応 43Edge 完全対応 79Firefox ? IE 未対応 なしOpera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
notifications permissionChrome 完全対応 43Edge 完全対応 79Firefox ? IE 未対応 なしOpera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
payment-handler permissionChrome 完全対応 66Edge 完全対応 79Firefox ? IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 66Chrome Android 完全対応 66Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 9.0
persistent-storage permissionChrome 完全対応 71Edge 完全対応 79Firefox 完全対応 53IE 未対応 なしOpera 完全対応 58Safari 未対応 なしWebView Android 完全対応 71Chrome Android 完全対応 71Firefox Android 完全対応 53Opera Android 完全対応 50Safari iOS 未対応 なしSamsung Internet Android 完全対応 10.0
push permissionChrome 完全対応 43Edge 完全対応 79Firefox ? IE 未対応 なしOpera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
queryChrome 完全対応 43Edge 完全対応 79Firefox 完全対応 46IE 未対応 なしOpera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 46Opera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
request
実験的非標準
Chrome 完全対応 46Edge 完全対応 79Firefox 未対応 なしIE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 46Chrome Android 完全対応 46Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
requestAll
実験的非標準
Chrome 完全対応 48Edge 完全対応 79Firefox 未対応 なしIE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 48Chrome Android 完全対応 48Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
revoke
実験的非標準
Chrome 完全対応 46Edge 完全対応 79Firefox 完全対応 51
無効
完全対応 51
無効
無効 From version 51: this feature is behind the dom.permissions.revoke.enable preference (needs to be set to true). To change preferences in Firefox, visit about:config.
未対応 47 — 51
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 46Chrome Android 完全対応 46Firefox Android 完全対応 51
無効
完全対応 51
無効
無効 From version 51: this feature is behind the dom.permissions.revoke.enable preference (needs to be set to true). To change preferences in Firefox, visit about:config.
未対応 47 — 51
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報