이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
@apps-in-toss/web-framework의 openCamera 호출 시 NOT_ALLOWED 에러가 발생하는 건에 대해 문의드립니다.
환경
- @apps-in-toss/web-framework: 2.0.1
증상
openCamera() 호출 시 아래 에러가 반환됩니다.
NOT_ALLOWED: 허용되지 않는 요청입니다.
OpenCameraPermissionError가 아닌 일반 에러로 떨어지며, 권한 승인 팝업에서 승인을 해도 동일한 에러가 발생합니다.
현재 설정
granite.config.ts:
import { defineConfig } from "@apps-in-toss/web-framework/config";
export default defineConfig({
appName: "app name",
permissions: [
{ name: "camera", access: "access" },
{ name: "photos", access: "read" },
],
// ...
});
함수:
export async function pickImageFromCamera(): Promise<MediaPickResult> {
try {
const image = await openCamera({ base64: true });
return {
id: image.id,
dataUri: normalizeDataUri(image.dataUri),
sourceType: "camera",
};
} catch (error) {
if (error instanceof OpenCameraPermissionError) {
throw new PermissionDeniedError(
"카메라 접근 권한이 필요해요. 권한을 허용해 주세요.",
);
}
if (error instanceof MediaSelectionCancelledError) {
throw error;
}
if (isCancelledError(error)) {
throw new MediaSelectionCancelledError("사진 촬영을 취소했어요.");
}
console.error("[pickImageFromCamera] unknown error:", error);
throw new MediaPickerUnknownError(
"사진 촬영을 불러오는 데 실패했어요.",
error,
);
}
}
- granite.config.ts에 camera, photos 권한을 선언한 상태입니다.
- 권한 승인 팝업이 표시되어 승인했지만, 이후에도 동일한 NOT_ALLOWED 에러가 발생합니다.