はかせのラボ

私の頭の中を書いていく雑記ブログです

Unity UnityでWebAPI使ってみた

あいさつ

どうも、はかせです。
前回UnityWebRequestを使って通信ができました。
今回はWebAPIをUnity上から叩いてみたいと思います。

WebAPIとは

簡単に言うとWeb上にあるサービスを
プログラム上で操作するために使うものです。

今回はUnityでちゃんとWebAPIを叩けるかという実験で
GoogleSpreadSheetのAPIを叩いてSpreadSheetの情報を取得してみます。

使うための前準備

Google Cloud Consoleなるものにアクセス
・そこでプロジェクトを作成しAPIを登録
APIを使うための認証情報を設定

今回認証情報は読み取りだけで充分だと思ったので
APIKeyを発行しています。
書き込みも行いたい場合はOAuthが必要になるかと思います。

使ってみる

まずはコードです。

public class WebTest : MonoBehaviour
{
    public string GoogleSpreadSheetAPIURL = "https://sheets.googleapis.com/v4/spreadsheets/";
    public string GoogleSpreadSheetID = "見せられないよ";
    public string GoogleSpreadSheetKey = "見せられないよ";
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(CallGetWebRequest(GoogleSpreadSheetAPIURL + GoogleSpreadSheetID + "?key=" + GoogleSpreadSheetKey));
    }

    private IEnumerator CallGetWebRequest(string inURL)
    {
        //ウェブリクエストを生成
        var request = UnityEngine.Networking.UnityWebRequest.Get(inURL);
        //通信待ち
        yield return request.SendWebRequest();
        //エラーが発生したか
        if (request.isHttpError || request.isNetworkError)
        {
            //エラー内容
            print(request.error);
        }
        else
        {
            //結果
            print(request.downloadHandler.text);
        }
    }
}

やってることは単純で
API用のURLを用意
・用意したURLに見たいSpreadSheetのIDを追加
・最後に認証情報を追加

API用のURLは直書きしてるやつがそれです。
SpreadSheetIDってのはSpreadSheetに
アクセスしたときに出てるURLの中にあります。

https://docs.google.com/spreadsheets/d/
~ここがID~
/edit#gid=1913550332

認証情報は前準備で用意したAPIKeyを?key=に続けて入れているだけです。
それでは実行結果です。
f:id:hakase0274:20190730231730p:plain

SpreadSheetの情報が取得できました。

あとがき

今回はUnityでWebAPIを使ってみたでした。
GoogleSpreadSheetのAPIを選んだのは個人的に親しみがあったからです。
他意はありません。

思ったより前準備がめんどくさかったです。
(しかも最低限の読み取り権限なので他にもなんかやりたかったらOAuth認証しなきゃあかん・・・orz)
ただWebAPIのコールがUnityに叩き落されなくてよかったです。

それでは今回はこの辺でノシ