つばさのーと

つばさの日常を綴るのーと

Re:[JavaScript]YahooのAPIを利用してクロスドメインアクセスを実現する

f:id:tsubasa123:20170119171032j:plain

 

おもしろそうなおもちゃを見つけたので覚え書き。問題はこのAPIを使って何をするかなんだよな。

 

元ネタはこちら

 

[JavaScript]YahooのAPIを利用してクロスドメインアクセスを実現する – Blog

 

サービス終了したと勝手に思い込んでいたんですが、Yahooのクロスドメイン用のAPIがまだ使えることを最近知りました。JSONPの仕組みを考えた人は本当に天才だと思います。

 

一応補足しておきますと、JavaScriptではほかのドメインに対しての通信がブラウザでチェックされるんですが、JSONPという機構を利用することで安全に通信を行うことができるようになります。まぁ、安全かどうかは通信先によるので保証されているわけではないのですが。

 

Re:SQL文を作成する

 

ソースコードまで真似するのはさすがに気が引けるので、適当なサンプルを自分でも作成。昔、ニコニコ動画のAPIで遊んだ時のメモが見つかったのでこれで試してみます。

 

dic.nicovideo.jp

 

(function(w) {
    const url = 'http://ext.nicovideo.jp/api/getthumbinfo/sm500873';
    const yql = `SELECT * FROM xml WHERE url = '${url}'`;
    const api = 'https://query.yahooapis.com/v1/public/yql?format=json&callback=__callback&q=';
    const script = document.createElement('script');
    w.__callback = function(response) {
        console.log(response.query.results);
    };
    script.src = api + encodeURIComponent(yql);
    document.body.appendChild(script);
})(window);

 

まぁ、同じようなコードになりますよね。これを実行すると、

 

Object
    nicovideo_thumb_response: Object
    status: "ok"
    thumb: Object

 

こんな感じのオブジェクトを取得することができます。気になる人はデベロッパーツールのコンソールから実行してみてください。

 

Feedlyの購読者が取りたい、けど何故かとれない

 

Feedlyの購読者数は下記のようなURLでアクセスすると取得することができます。

 

http://cloud.feedly.com/v3/feeds/feed%2F【URLエンコードした自分のブログURL】

 

当ブログなら http://cloud.feedly.com/v3/feeds/feed%2Fhttp%3a%2f%2fwww.tsubasa-note.blog%2ffeed となります。購読者が1人いた。誰だ、ありがとうございます。

 

で、これをAPIに喰わせてみたんですが、なぜかうまくいかないんですよね。JSONの指定に変更してもエラー。先のサイトでも紹介されている、デベロッパー向けのコンソールからSQL(YQL)を流してもフォーマットエラーみたいなものが返される。これはFeedly側の問題なのかな?

 

外部APIを利用したプログラミングはこの辺の調整が難しいというか、めんどくさいところです。いや、APIを提供していただけるのは非常にありがたいことなんですけどね。

 

さいごに

 

未解決のまま終わるのは好きじゃないのですが、ちょっと私の手には負えなさそうだったので今日はここまで。

 

Feedlyはダメでしたが、ニコ動に関しては問題なく取得できましたし、YahooのAPIも割と簡単に使えそうなのでアイデア次第ではなかなか面白いことができそうな予感です。さて、何をぶち込んでみようかな。

 

ではでは、最後までお付き合いいただきありがとうございました。