UnityからTwitterへ投稿できるようにする→モバイル限定

#目的
Twitterの止めどなく流れてくるデータ、ユーザーストリームなるものをVRで扱いたいがためにツイッターのデータを拾ってこられるようにするためにツイッターチュートリアルをやってみた話で躓いたところメモ。

#結論
モバイルアプリ専用。
PCアプリケーションでtwitter APIを叩いてやるには、別途データ取得鯖立てたほうが楽かも。

#試行錯誤記録
##SMS受信可能な電話番号をご用意ください
ツイッター開発者になるには電話番号を登録しなければならない。
無いとだめって言われたので登録した。SMSで番号来たけど2回くらいはじかれた。なぜだ。
海外電話番号ぽかったので冒頭の0抜いて90xxxxyyyyって番号入れたら通った。

##さらっと書いてあるリンク先の作業がすごく長い
Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome
`パーミッションの設定`までやればok。

###Manage my appsのページってどこ？
https://apps.twitter.com/
ここです。
ちなみに https://dev.twitter.com/ の下の方にリンクはあります。

###フォームへの入力内容(Callback URLとか)どうすればいいの？
google.comで良い。まずは動くもののテスト用。動かせてから替えればいい。

##各ボタンのOnClickEventを定義
コードをコピペすると、Visual Studioさんが「ココ間違ってるで」って赤線引いてきてビビるけど、気にせず続きをコピペしていくと大人しくなります。

##「完成」と書いてあるところまでいったけど動かない…
一回で諦めちゃだめだ。認証は一回で通ったけど、書き込みが通らず、パーミッションとか確認してみたり、数回認証からやり直したら何故か通った。最初はツンツンするみたいだぞあの鶏。

##変更箇所詳細
###PostTweetCallbackの定義部を書き換えましょう
```
    //public delegate void PostTweetCallback(bool success);
    public delegate void PostTweetCallback(bool success, string response);
```
→ファイル内検索しましょう。34行目くらいです。

###PostTweet()
→比較ツールを使って変えた場所を可視化。
![diff-PostTweet.png](https://qiita-image-store.s3.amazonaws.com/0/71326/4fc23cb3-64b9-50e6-0a22-9c2d30c29ac0.png)
←旧コード、　→新コード
179行目あたりから、各callbackの引数を(1個目, 2個目)に変えてってるのが丸わかりですね。

テキスト差分可視化ツールはいくつかブックマークにあると便利。

- https://www.diffchecker.com/diff
- http://labs.ceek.jp/diff/

###Demo.csの死
赤いエラー出て邪魔になる状態＝死というわけです。
{}の中を全部選択して、Ctrl+K, Ctrl+Cとキー操作すると一括コメントアウトできます。寝ていただきました。

###JSON直リン倶楽部
http:// wiki.unity3d.com/images/8/82/SimpleJSON.zip
さっとDLしてぱっと解凍してじゃきーんとインポート。
なんか変なファイルどっかちらばった…。

ここまでで、JSONからID取り出すところまではいけた。

#機能追加
##GetUserTimeline
Twitter.csに追記していく。

![diff-getusertimeline.png](https://qiita-image-store.s3.amazonaws.com/0/71326/7a563cc9-98ea-82b0-3fe6-563745b0108c.png)
←旧コード、　→新コード

頭の方にコードが集中した印象。

##最後の所はどこで使うのか
```
StartCoroutine(Twitter.API.GetUserTimeline(m_AccessTokenResponse.UserId, CONSUMER_KEY, CONSUMER_SECRET, m_AccessTokenResponse,
        new Twitter.GetUserTimelineCallback(this.OnGetUserTimeline)));
```

多重入れ子コード。どこで使えば良いんだろうこれ。
`TwitterComponentHandler.cs`の/* OnClick Event */、38～55行目でエラーになってた。ここか。

`GetUserTimeline用のcallback関数を定義`のとこであった四行が原因らしい。コピペ場所を間違えたようだ。

 `Twitter.cs`, public class APIの直前、33行目あたりからのをまるっと置き換える。

```
    public delegate void RequestTokenCallback(bool success, RequestTokenResponse response);
    public delegate void AccessTokenCallback(bool success, AccessTokenResponse response);
    public delegate void PostTweetCallback(bool success, string response);
    public delegate void GetUserTimelineCallback(bool success, string response);

```
エラーが無くなった。

#ビルド
認証とツイートとツイート結果のIDの取得ともしかしたらタイムラインも取得出来るかもしれないコードになったのでビルドしてみる。

```
Assets/Fabric/Kits/Twitter/Runtime/Twitter.cs(39,39): error CS0246: The type or namespace name `EditorTwitterImpl' could not be found. Are you missing a using directive or an assembly reference?

```

？？？Playするときにはエラーがなくて、ビルドするときにコンパイルエラーになるパターンか。

Does Fabric for Unity include support for none mobile apps? - Fabric - Twitter Developers
https://twittercommunity.com/t/does-fabric-for-unity-include-support-for-none-mobile-apps/70767

```
Twitter Kit is optimized for Mobile apps. If you're developing macOS or Windows based apps, you'd want to use the REST API
```
モバイルアプリ専用！だと！？

orz

#別なのを試す
というかこれ本家？

Fabric for Unityを試す | MUSHIKAGO APPS MEMO
http://mushikago.com/i/?p=7030

なんか想像したのと違った。
開発途中のをテスト配布するためのツールのようだ。
ツイッターの各アクセスが簡単になるものではなかった。。

試しにPCアプリとしてビルドさせたら同じエラーが出た。残念。