おはやし日記

テーマ……バイク←プログラミング←旅

swarm API 備忘録(実用例)

swarm API (Foursquare API) を利用して,

  • 周辺のスポットを検索
  • チェックイン
  • チェックインをシェア

ができたので,その概要について書きます。

とりあえずAPIを使えるようにするのを昨日やりましたが

o-treetree.hatenablog.com

今回はその発展形です。相変わらず,curlで,パラメータをクエリでくっつけてやってます。

変数について

  • CLIENT_ID : 先の記事で取得方法を説明したID。各自のものに書き換える
  • CLIENT_SECRET : 同じく,SECRET。
  • ACCESS_TOKEN : ユーザー認証で得られたアクセストークン。認証したユーザーに固有。

周辺を検索

先の記事中の例ではエンドポイントvenues/explore(Get Venue Recommendations )で周辺のスポットを検索していました。これで取得できるvenueのリストが,swarmアプリの上で見られるものと違うなぁと思っていたのですが,FAQページにこんなことが書いてありました。

Could you elaborate more on venues/explore vs. venues/search?

Both venues/explore and venues/search allow you to find venues in an area, but their methodologies are slightly different. venues/explore is better at answering the question “what are some popular coffee shops in this area?” whereas venues/search is better at “where is the nearest Joe’s Coffee?” or “where am I right now?”. When using venues/search, you should pay attention to what the intent parameter does and what values you should provide in order to get your desired results.

FAQ - API Support

要するに

  • venues/exploreは近くのおすすめスポットを教えてくれる
  • venues/searchは近くのスポットを教えてくれる

ということで,venues/search(Search for Venues )を使った方が良さそうです。

仕様

  • メソッド : GET
  • URL : https://api.foursquare.com/v2/venues/search
  • 認証 : 認証なしだと,その場に何人いるか表示されましたが,認証を入れるとそれが出ませんでした。後述。

パラメータ

ぱっと使うために必要なもの。

名前 説明
ll 35.6586,139.7454 緯度,経度
intent checkin, browse 探索方法。指定なければcheckin
radius 250 半径
query ここ参照 検索文字列
limit 5 表示する数

リクエス

  • 東京タワー(35.6586,139.7454)周辺のスポットを認証なしで5つ検索
curl "https://api.foursquare.com/v2/venues/search\
?client_id=CLIENT_ID\
&client_secret=CLIENT_SECRET\
&v=20180323\
&ll=35.6586,139.7454\
&limit=5\
&locale=ja"

memo

  • GETのときは curl "ホニャララ"で可能
  • バックスラッシュをつけると途中で改行可能。
言語指定

最後につけたパラメータlocaleで,レスポンスの言語の指定ができる。つけなかったら,リクエストをブラウザのURL枠に入れればどこかで処理してくれるっぽいけどターミナルだと英語で返ってきてしまう。ターミナルで日本語を得るにはlocale=jaをつける。

locale=jaを指定すれば以下のようにレスポンスが日本語で来る(以下の,["respons"]["venues"]["hereNow"]["summary"]等が英->日変換される。venue名や地名等はどちらも日本語)

レスポンス

レスポンス解説

パス(["respons"]["venues"]以下) 解説
[0]["id"] 4b56a5e8f964a5208e1728e3 venueの固有id
[0]["name"] 東京タワー venueの名前
[0]["location"]["address"] 芝公園4-2-8 住所
[0]["location"]["hereNow"]["count"] 3 現在(いつ?)チェックインしている人の数
[1]["name"] メインデッキ
[1]["location"]["crossStreet"] 東京タワー 150m venueを内包する場所の名前(?)
  • 認証ありで検索すると,["hereNow"]その他数個のパラメータが無い。詳しくは分からん

リクエストパラメータqueryについて

検索文字列だけど,半角英数以外のものを入れる時は置き換え(URLエンコード)しなければいけない。下記のチェックイン時のコメントshoutに文字列を入れる時も同様の変換が必要。

文字列 置き換え
[空白] + あるいは %20
[ASCII文字] %{ASCIIcode16進}
[ひらがなとか] ここで変換
タワー %E3%82%BF%E3%83%AF%E3%83%BC
  • 東京タワー(35.6586,139.7454)の周り100mで名前に「タワー」を含むvenueを5つ探すリクエス

どうも,query指定で探すには,intent=browseとしてradiusを追加するのが良いようだ。

curl "https://api.foursquare.com/v2/venues/search\
?client_id=CLIENT_ID\
&client_secret=CLIENT_SECRET\
&v=20180323\
&ll=35.6586,139.7454\
&radius=100\
&intent=browse\
&limit=5\
&locale=ja\
&query=%E3%82%BF%E3%83%AF%E3%83%BC"

チェックイン

venues/searchで探したスポットから,好きなものを選んだら(ここの実装は各自)checkins/add(Create a Check-in )を利用してチェックインできます。

仕様

  • メソッド : POST
  • URL : https://api.foursquare.com/v2/checkins/add
  • 認証 : ユーザー認証必須

パラメータ

選んだスポット(ここでは東京タワー)にチェックインするだけなら

名前 説明
viewId 4b56a5e8f964a5208e1728e3 先ほど取得済み
shout This+is+a+test+checkin%21 URLエンコードについてここ参照
broadcast public, private 指定なければpublic

リクエス

東京タワーに,「this is second TEST checkin!」と(いろいろ試していた痕跡をコピペしたら"second TEST"のままだった…………)コメントを添えてチェックイン

curl -X POST "https://api.foursquare.com/v2/checkins/add\
?oauth_token=ACCESS_TOKEN\
&v=20190830\
&locale=ja\
&venueId=4b56a5e8f964a5208e1728e3\
&shout=this%20is%20second%20TEST%20checkin%21"

レスポンス

レスポンス解説

パス(["response"]["checkin"]以下) 解説
["id"] 5d6bd1c1290dda000838b277 checkinのID
["createdAt"] 1567347137 UNIXタイムスタンプ(2019/09/01 23:12:17 Tokyo)
["shout"] this is second TEST checkin! コメント
["user"]["id"] 550622851 僕のswarmアカウントのユーザーID
["user"]["firstName"] ohayashi 同,名前
["venue"]["……"] チェックインしたvenueの各情報

チェックインのシェア

チェックインをシェアするには, ["response"]["checkin"]["checkinShortUrl"]を使用します。上記の東京タワーへのチェックインでは https://www.swarmapp.com/user/550622851/checkin/5d6bd1c1290dda000838b277?s=3vOe6tbiwcAgZLA_ial3X1jZY3kとなっている。

こんな感じ

これでswarmアプリもどきを作れるようになりました!!!

日付ギリギリ!!!おしまい!!!!!

参考

トップへ戻る

にほんブログ村 IT技術ブログへ
にほんブログ村

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

ブログランキング・にほんブログ村へにほんブログ村

プライバシーポリシー ・お問い合わせはこちら