mixiアプリ » 技術仕様(新方式) » モバイル » アプリからフォトアップロード機能について
アプリからフォトアップロード機能について
mixiアプリからフォトアップロード機能を利用することにより、SAPが生成や加工を施した画像ファイルを、mixiアプリからユーザのかんたん公開アルバムに登録することができます。例えば、ユーザが既にmixiフォトのアルバムに登録した写真について、mixiアプリ上で加工などを行い、その結果をアルバムに再登録させることで、その加工された写真を元に友人とのコミュニケーションを生み出すことが可能です。更にその写真を見た友人がそのmixiアプリを使って新しい加工を施す・・・といった連鎖も行われるようになるでしょう。
本文書では、mixiアプリからフォトアップロード機能について、技術的な利用方法について説明いたします。
アップロードの手順
mixiアプリからフォトアップロード機能を使って画像ファイルをかんたん公開アルバムに登録するための手順は、以下となります。
- 登録したい画像ファイルをSAP側Webサーバ上で準備します。
- mixi_apps2スコープのユーザ認可を取得します(既に取得している場合は不要です)。
- mixiアプリ内でフォトアップロード用のURIスキーマを記述します。
- mixiサーバからSAP側Webサーバにフォトの取得要求が送信されます。
- SAP側Webサーバで署名の検証を行います。
- SAP側Webサーバは画像ファイルをmixiサーバに返送します。
- ユーザは確認画面にて画像ファイルのサムネイルを閲覧し、登録するか選択します。
- mixiサーバ内でかんたん画像アルバムに画像ファイルが登録されます。
画像ファイルの準備
登録したい画像ファイルを、SAP側のWebサーバ上で準備します。登録可能な画像ファイルの形式は「JPEG」となります。準備された画像ファイルをmixiサーバから取得可能とするため、ここで画像ファイルのURLを決定しておきます。
ユーザ認可の取得
アプリからフォトアップロード機能を利用するためには、mixi_apps2スコープのユーザ認可を取得する必要があります。
詳しくは ユーザ認可について を参照ください。
フォトアップロード用URIスキーマの記述
mixiアプリのコンテンツ内に、フォトアップロード用のURIスキーマを記述します。そのURIスキーマは”upload:photo”となります。このURIスキーマを利用する場合には、以下のパラメータを指定します。
| 名前 | 説明 |
|---|---|
| img_url | 登録したい画像ファイルのエスケープ済みURL。 |
| callback | 登録後にmixiアプリに戻る際のエスケープ済みURL。 |
このURIスキーマの記述例を以下に示します。
<a href="upload:photo?img_url=http%3A%2F%2Fserver.name%2Fimage.jpeg&callback=http%3A%2F%2Fexample.com%2Ffoo%2F">画像アップロード</a>
画像ファイルのmixiサーバからの取得
ユーザが上記のupload:photo URIスキーマによるリンクをクリックした後に、mixiサーバは指定されたURLに基づいて、画像ファイルの取得要求を送信します。SAP側Webサーバは、この取得要求に基づいて、予め準備しておいた画像ファイルをレスポンスとしてmixiサーバに返送します。
mixiサーバからのリクエストには、署名が付与されます。署名の検証には、この文書の最後に記載されている公開鍵を利用します。SAP側Webサーバは、この公開鍵を使って署名の検証を行うことで、mixiサーバからのリクエストかどうかの妥当性を必ず判断するようにしてください。
また、リクエストには「opensocial_owner_id」および「opensocial_app_id」パラメータが含まれます。これは署名のBase stringにも含まれるものです。mixiサーバからのリクエストであるという妥当性検証のほかにも、これらのパラメータを使用することで本人確認(画像ファイルを本当に対象ユーザに渡していいかどうか)も合わせて行うようにしてください。
署名つきリクエストの具体的な検証方法は、以下のドキュメントをご覧ください。
[署名つきリクエストの検証]
http://developer.mixi.co.jp/appli/spec/pc/require_servers#toc-4
ユーザの登録確認とコールバック関数の呼び出し
mixiサーバが画像ファイルの取得を完了した後に、本当にかんたん公開アルバムに公開していいかどうかを問い合わせる確認ページが表示されます。その確認ページには、先ほどmixiサーバが取得した画像ファイルのサムネイル画像が表示されます。
ユーザが登録に同意あるいは拒否を行った後に、callbackパラメータに指定したページに遷移します。その際に、resultパラメータの値(成功時はsuccess, 失敗時はfailed)によって、登録に成功したかどうかを確認することが可能です。この値を必ず確認し、それぞれ適切な処理を実装するようにしてください。失敗時には、errorパラメータにその原因が指定されます。
エラーコード
登録が正常に終了しなかった際のエラーコードと意味は以下となります。
| エラーコード | 意味 |
|---|---|
| 400 |
指定されたURLへ画像を取りにいったが正常な応答(200)が得られなかった 取得したコンテンツのmime-typeが、jpegでなかった 取得したコンテンツのmime-typeが、jpegでなかった |
| 401 | mixi_apps2スコープの認可を保持していないとき |
| 403 | ユーザが処理の継続を拒否した |
| 413 | リクエストされた画像のサイズが大きすぎる |
| 500 | mixi側のサーバエラーにより処理が完了できなかった |
公開鍵
署名つきリクエストの妥当性を検証するために使用する公開鍵は以下となります。
-----BEGIN CERTIFICATE----- MIICdzCCAeCgAwIBAgIJAK6oiSkLW/goMA0GCSqGSIb3DQEBBQUAMDIxCzAJBgNV BAYTAkpQMREwDwYDVQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDAeFw0x MDA3MjEwODI0MDFaFw0xMjA3MjAwODI0MDFaMDIxCzAJBgNVBAYTAkpQMREwDwYD VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDCBnzANBgkqhkiG9w0BAQEF AAOBjQAwgYkCgYEAzSWXar2xZ1+2kdJKW6FzJBB8/RtDOWY46sQN3q93UQP6RQi/ AGeyhd0UNcx8uw+N7ulz/dNDdy1EbwrXMdN0jfK0SRHF61HIfyLfBNrWNUqhlwbj j0duZcdLeHkWDmoZdB9bekOvFfLKIF9Qey/njQSUdglfTL9P2XwaYjFXjqkCAwEA AaOBlDCBkTAdBgNVHQ4EFgQUsqTgGT8ThFGs/6EcCNDEH/QivKswYgYDVR0jBFsw WYAUsqTgGT8ThFGs/6EcCNDEH/QivKuhNqQ0MDIxCzAJBgNVBAYTAkpQMREwDwYD VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcIIJAK6oiSkLW/goMAwGA1Ud EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAe2KWtJV2tSVAqZ988NuwXym73yPy PphRet/GzFnA4kWJzJ47AXbpSW2hwx/zbnV57bJ1/+nRau4T6E+FkaBnYgVQB1AH 1RPhIEXlaueur1Zd2cTe2c09IHSfiiv6Vx3rc+oqTtjmKys6OqV1U+rMZg2wO7qN 0n8x+NIZc268bzY= -----END CERTIFICATE-----