WOFF アプリ開発ガイドライン

WOFF アプリを開発する際の遵守事項や推奨事項、注意事項についてまとめています。WOFF アプリの開発時は、この開発ガイドラインに従って開発してください。

遵守事項 {#mandatory}

大量リクエストは避けてください {#mandatory-1}

WOFF アプリを介して LINE WORKS プラットフォームに対して、大量のリクエストを送信しないでください。同様に、WOFF アプリへの大量のアクセスも行わないでください。

WOFF アプリの初期化が完了するまでは URL を変更しないでください {#mandatory-2}

WOFF アプリが実行されると、URL に付与された情報を基に woff.init() が実行されます。woff.init() メソッドが返す Promise オブジェクトが resolve する前に、サーバーやフロントエンド側の処理などで URL を変更しないようにしてください。URL を変更すると、INIT_FAILED エラーが発生し WOFF アプリを開くことができなくなります。

HTTPSを利用してください {#mandatory-3}

WOFF URL や Endpoint URL の URL スキーム は https である必要があります。

同意なくユーザーのトラッキングは行わないようにしてください {#mandatory-4}

ユーザーの同意なく、cookie や localStorage、sessionStorage を使ってユーザーをトラックしたり、ユーザー情報と外部セッション情報を結びつけたりしないでください。

ユーザー操作でデバイスや OS の機能を起動させてください {#mandatory-5}

WOFF アプリ上でデバイスまたは OS の機能 (位置情報の取得・カメラ・マイクなど) を利用する場合は、必ずユーザー操作をきっかけにして実行されるように実装してください。

設定する Scope は最小限にしてください {#mandatory-6}

woff.getAccessToken() で取得した Access Token には Developer Console の「OAuth Scopes」で選択したすべての Scope が含まれます。選択される Scope は最小になるよう設定してください。


注意事項 {#note}

WOFF ブラウザのキャッシュについて {#note-1}

WOFF ブラウザは、表示したコンテンツの内容を Cache-Control などの HTTP ヘッダーの指示に従ってキャッシュとして保存して利用する場合があります。

また、WOFFブラウザに保存されたキャッシュを明示的に削除することはできません。開発中にキャッシュされないようにするためには、ランダムなハッシュ値をクエリパラメータに追加するなどのキャッシュバスティングを検討ください。

WOFF ブラウザでの cookie, localStorage, sessionStorage の利用について {#note-2}

WOFF ブラウザでは cookie や localStorage、sessionStorage は利用できますが、保持期間など正しく動作しない可能性があります。

WOFF ブラウザでの OS 機能の利用について {#note-3}

WOFF ブラウザで利用可能な Web 技術については WKWebView や Android WebView の仕様に従いますが、一部機能はご利用いただけない可能性があります。

WOFF ブラウザ内での AppLink の利用について {#note-4}

AppLink 機能は WOFF ブラウザでは対応していません。

WOFF の URL フラグメントについて {#note-5}

WOFF アプリを開く際のリダイレクト処理にて、アクセストークンなどの機密情報を含んだ URL フラグメントが付与されます。ロギングをする際などは外部に URL が漏洩しないように注意してください。


推奨事項 {#recommendation}

Bot との組み合わせて提供する {#recommendation-1}

WOFF アプリは Bot と組み合わせて提供することを推奨します。

Bot のテンプレートメッセージや固定メニュー・リッチメニューなどのボタンに URI アクション として WOFF URL を設定しておくことで、WOFF アプリを開く入口となります。

参考

  • Incoming Webhook アプリ のメッセージのリンクボタンにも WOFF URL を設定することができます。詳しくはこちらをご参照ください。

WOFF ブラウザには WOFF アプリとして作成した Web サイトのみを表示する {#recommendation-2}

WOFF アプリとして作成されていない Web サイトは WOFF ブラウザ上で正しく動作しない可能性があります。woff.openWindow() で外部ブラウザで開くことを推奨します。

コンテンツの表示は認証後に行う {#recommendation-3}

適切なユーザーにコンテンツが表示されるよう、ユーザーのプロフィール情報 ( woff.getProfile() で取得します) などを元に表示可否を判定することを推奨します。

WOFF URL を通したアクセスかどうかを検証する {#recommendation-4}

WOFF リダイレクト検証 を利用することで、WOFF URL を通したアクセスなのか、Endpoint URL への直接のアクセスなのかを判定することができます。
この検証によって、WOFF URL を通して適切に開かれたと判定できた場合にコンテンツをレスポンスすることを推奨します。

この WOFF リダイレクト検証は、アクセスを受ける Web サーバー側で行ってください。
また、signature の検証に加えて、nonce が過去のアクセスで利用されていないか確認することで、より確実な検証を行えます。