THETAから直接SNSに360度画像を投稿(無理でした)

## はじめに

リコーの@ueueです｡
以下の前回の僕の記事ではTHETAプラグインを使ってLINEにメッセージをおくりました｡

[THETAで愛を伝える](https://qiita.com/ueue/items/ecb5032c923531a45408)

今回はTHETAで撮った画像を直接LINEとFacebookに投稿しようと思い､LINE､Facebookの投稿APIを調査した結果を共有します｡

｢THETAプラグインて何？｣という方は､まずは以下の記事を御覧ください｡
[THETAプラグインパートナープログラムはじめました](https://qiita.com/mrtakada/items/8f3bbf8d283c26899473)

また､[こちらのtwitterアカウント](https://twitter.com/theta_plugin)でTHETAプラグイン開発に関する情報発信もしていますので､興味を持たれた場合はぜひフォローしてください｡

本題に戻ります｡

ご存じない方もいるかもしれませんが､LINE､Facebookともにアプリからの360度画像投稿に対応しています｡
- [Facebookで簡単に「360度写真」「360度動画」を楽しもう！](https://theta360.com/ja/howto-facebook/)
- [LINEで手軽に「360度写真」を共有しよう！](https://theta360.com/ja/howto-line/)

上記のリンク先にあるように､これまでTHETAでとった画像を投稿するためには一旦モバイル側のTHETAアプリにダウンロードしてから投稿という流れでした｡
これを､プラグインを利用することで｢THETAで撮ったら､そのままLINE,Facebookに投稿する｣という流れに変えるのが狙いです｡

まずはこれを実現するためにLINE,FacebookのAPIを調査しました｡

## 結論

で､結論からいうと､残念ながらAPI経由で360度画像を投稿することはできませんでした｡
厳密に言うと､LINEとFacebook Messengerで360度画像を投稿したところ､360度画像とは認識されず､普通の画像として認識されてしまいました｡
また､Facebookのタイムラインに投稿することはそもそもできませんでした｡
LINEさん､Facebookさん､対応してクレメンス｡

以下で､試したことを書いておきますので､
もし､｢こうやればできるんじゃない？｣という情報あればコメントに書き込んでいただけるとうれしいです｡

## LINEへの投稿

前回の記事と同じLINE messaging-apiを利用して投稿します｡

[Messaging APIリファレンス](https://developers.line.me/ja/reference/messaging-api/#image-message)

アクセストークンとか送信先のUserIDのあたりは[前回の記事](https://qiita.com/ueue/items/ecb5032c923531a45408)を参照してください｡

以下のJSONをmessagesの配列の要素として追加することで画像を投稿することが可能です｡

```json
{
    "type": "image",
    "originalContentUrl": "https://example.com/original.jpg",
    "previewImageUrl": "https://example.com/preview.jpg"
}
```

以下､curlのサンプルになります｡

```
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer <アクセストークン>' \
-d '{
    "to": "<UserID>",
    "messages":[
        {
            "type":"text",
            "text":"愛してる"
        },
        {
            "type":"text",
            "text":"結婚してください"
        },
        {
            "type": "image",
            "originalContentUrl": "https://example.com/original.jpg",
            "previewImageUrl": "https://example.com/preview.jpg"
        }
    ]
}'
```

これで360度画像を投稿したスクショが以下です｡


![20180911-line-facebook-not-360_image_scsho1.PNG](https://qiita-image-store.s3.amazonaws.com/0/264025/3c6de27e-1037-9a23-ac2a-3aeee70026bd.png)


写真の真ん中に360度マークが出ておらず､普通の画像として扱われています｡

ちなみにこの画像を一旦ローカルに保存し､LINEアプリから投稿すると360度画像として認識されました｡

![20180911-line-facebook-not-360_image_scsho2.PNG](https://qiita-image-store.s3.amazonaws.com/0/264025/22aa266e-e93e-5ab3-9896-801939d5943a.png)

アプリで投稿するときにはこれが360度画像であるという情報を付与して投稿しているようです｡
APIにはそのようなオプションがありませんでした｡

## Facebookへの投稿

調べてみたところFacebookに画像を投稿する方法として以下の2つがあるようです｡

1. [Graph API](https://developers.facebook.com/docs/graph-api/photo-uploads/?locale=ja_JP)
2. [シェア機能](https://developers.facebook.com/docs/sharing/overview?locale=ja_JP)


Graph APIのドキュメントを眺めていたところ､以下の記載がありました｡
どうやら現時点(2018/09/27)ではAPI経由の直接の投稿は禁止されているようです｡

>2018年4月24日現在、publish_actionsアクセス許可は削除されています。詳しくは、重要な変更の更新履歴をご覧ください。アプリユーザーがFacebookでコンテンツをシェアできるようにするには、代わりに製品をシェアを使用することをおすすめします。

上記の引用にもあるように､アプリからFacebookに投稿する場合はシェア機能を使うことが推奨されています｡
THETAプラグインとは実質AndroidアプリのことなのでAndoroidアプリから画像シェアする方法がそのまま使えるのではないかと思い､以下のドキュメントを読んでみました｡

[Andoroidからのシェア](https://developers.facebook.com/docs/sharing/android/?locale=ja_JP)


が､以下の記載のようにFacebookのネイティブアプリがTHETAに入っている必要があるとのことです｡

> シェアするには、ネイティブのAndroid用Facebook (バージョン7.0以上)がインストールされている必要があります。

THETAにFacebookのネイティブアプリをインストールすることはできません｡
あと､THETAにはUIがないので､シェアダイアログを表示することもできません｡
ということで､THETAプラグインからFacebookに画像を投稿するのは無理そうです｡｡

## Facebook Messengerでの送信

次に
[Messenger Platform](https://developers.facebook.com/docs/messenger-platform/send-messages?locale=ja_JP)
を利用してMessengerに360度画像を投稿できないか調べてみました｡
手元のiPhoneのFacebook Messengerアプリから360度画像を投稿してみたら､ちゃんと360度画像がみれました｡

ドキュメント読んだところFacebook pageに紐づくbotに送信する､という前提のようです｡
[こちら](https://developers.facebook.com/docs/messenger-platform/getting-started/app-setup?locale=ja_JP)を参考にFacebook pageを作成し､360度画像を送ってみました｡
<!-- slide -->

curlだとこんな感じ｡

```
curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"<受信者のID>"
  },
  "message":{
    "attachment":{
      "type":"image", 
      "payload":{
        "url":"https://example.com/original.jpg",
        "is_reusable":true
      }
    }
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=<アクセストークン>"
```

画像の投稿はできましたが､これまた画像の360度画像とは認識してくれませんでした｡｡


## まとめ

* LINEのMessaging APIで画像を投稿できましたが､360度画像としては認識してくれませんでした｡
* FacbookのタイムラインにTHETAプラグインから画像を投稿するのは無理そうです｡
* Facebook Messenger Platformの機能で画像を投稿できましたが､360度画像としては認識してくれませんでした｡

## 最後にTHETAプラグイン開発について

今回はプラグイン開発にいたりませんでしたが､
THETAプラグインに興味を持たれた方がいれば、以下の記事もぜひご覧ください。

* [THETAプラグインパートナープログラムはじめました](https://qiita.com/mrtakada/items/8f3bbf8d283c26899473)
* [【THETAプラグイン開発】プラグインパートナープログラムに登録してみよう](https://qiita.com/mShiiina/items/55d98f366e650ca42251)
* [【THETAプラグイン開発】THETAを開発者モードにする手順](https://qiita.com/ueue/items/7c4027db3af463956e26)

[RICOH THETAプラグイン開発者コミュニティ](https://qiita.com/organizations/theta-plugin)では、他にも記事を書いています。
RICOH THETAプラグインについては[こちら](https://api.ricoh/products/theta-plugin/)。
興味を持たれた方は[twitter](https://twitter.com/thetaplugin)のフォローと[THETAプラグイン開発コミュニティ(slack)](https://join.slack.com/t/thetadeveloper/shared_invite/enQtNzcxODI2MTk2ODg0LWY5YmU2ZTIxNGYwNzlmNWZjMWMyMWFlMzY3ZmQ3NGU3ZjZiZjI0Njk4MGIxMDU5NDJiMzQ4Y2FkNDEzYmFlNGU)への参加もぜひどうぞ｡