files/en-us/web/api/devicemotionevent/requestpermission_static/index.md
{{APIRef("Device Orientation Events")}}{{SeeCompatTable}}{{securecontext_header}}
The requestPermission() static method of the {{domxref("DeviceMotionEvent")}} interface requests the user's permission to access device motion data from the accelerometer and gyroscope sensors. This method requires {{Glossary("transient activation")}}, meaning that it must be triggered by a UI event such as a button click.
DeviceMotionEvent.requestPermission()
None.
A {{jsxref("Promise")}} that resolves with a string which is either "granted" or "denied".
The returned promise rejects with the following exceptions:
NotAllowedError {{domxref("DOMException")}}
"prompt" and the calling function does not have {{Glossary("transient activation")}}.Transient user activation is required. The user has to interact with the page or a UI element in order for this feature to work.
document.querySelector("button").addEventListener("click", async () => {
if (typeof DeviceMotionEvent.requestPermission !== "function") {
// The feature is not available, or does not need permission.
return;
}
const permission = await DeviceMotionEvent.requestPermission();
if (permission === "granted") {
window.addEventListener("devicemotion", (event) => {
console.log(`Acceleration X: ${event.acceleration.x}`);
console.log(`Acceleration Y: ${event.acceleration.y}`);
console.log(`Acceleration Z: ${event.acceleration.z}`);
});
}
});
{{Specifications}}
{{Compat}}