http://developer.foursquare.com/docs/oauth.html
Foursquare APIv2 はOAuth2.0を通してしか使用できません。これはあなたのアプリケーションがユーザのデータを安全に保っていることと、我々がAPIの利用状況を追跡することを手助けすることのために重要なことです。OAuth 2.0はFacebookのGraph APIなどの様々な巨大なAPIプロバイダーで使われている標準です。
もし、OAuth 1.0を使った経験があるならば、新しいバージョンはもっと簡単でもっと素晴らしいことが分かるでしょう。周囲にはさまざまなチュートリアルがありますが、そのうちの一つ、このblog記事が参考になるでしょう。
始めるにあたり、まず、あなたのアプリケーションを登録し、APIのクレデンシャルを取得します。さらに安全なパスワードを使って、別のアカウントで登録することもできます。それぞれのクレデンシャルは対応するURLと結びついているため、開発サーバのURLを示す開発用クレデンシャル、製品サーバのURLを示す製品クレデンシャルのセットを作ることも出来ます。OAuth2のために、登録処理によって得られたあなたの”キー”はあなたの”id”であり、登録時のあなたのシークレットはあなたのシークレットとなります。(訳註: 訳不正確)
新しいAPIを使用するには、大きく分けて三つの方法があります。
(PHP, Perl, Ruby, Python, Java, Scala, など)
https://foursquare.com/oauth2/authenticate
?client_id=YOUR_CLIENT_ID
&response_type=code
&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
https://YOUR_REGISTERED_REDIRECT_URI/?code=CODE
https://foursquare.com/oauth2/access_token
?client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&grant_type=authorization_code
&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
&code=CODE
{ access_token: ACCESS_TOKEN }
(Javascript)
https://foursquare.com/oauth2/authenticate
?client_id=CLIENT_ID
&response_type=token
&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
http://YOUR_REGISTERED_REDIRECT_URI/#access_token=ACCESS_TOKEN
(Android Java, iOS Objective-C, など)
もし、あなたのアプリケーションと一緒になって動くサーバがある場合、私たちは上記のサーバの場合を使うことを強く勧めます。これは埋め込みのブラウザで動作するかもしれません。Facebook APIと同じように、モバイル用に最適化されたインタフェースを得るために、あなたの認証や認証用URLにdisplay=touchを付け加えても構いません。
一度アクセストークンを得たら、どんなエンドポイントも使うのは簡単です。oauth_token=ACCESS_TOKEN をGETかPOSTに付け加えるだけです。例えばコマンドラインから、以下のようにします。
curl https://api.foursquare.com/checkin/history?oauth_token=ACCESS_TOKEN
いえい!たったこれだけです!
もしもあなたが古いfoursquare APIのために、OAuth 1.0で既に登録している場合、心配しないでください!ユーザのシークレットをAPIv2のoauth_tokenとして使うだけです。
(Venue 検索などの)いくつかのエンドポイントは特定のユーザに対してなにかを行うわけではありません。この場合、私たちは使用個人情報に基づかない全体のデータを返します。この時の性能は他のエンドポイントへのアクセスよりわずかに優れています。これらのエンドポイントの場合、あなたのクライアントIDをclient_idとして、あなたのクライアントシークレットをclient_secretとして渡します。OAuth2仕様書のdraft 11によれば、”Client Credentials”という名前のトークンを利用してコンシューマに対する機構を提供する方法がありますが、私たちは現在この方式をサポートしていません。
OAuth2はリクエストの手動での署名を求めない場合、平文で送ることが出来ます。全てのリクエストはHTTPSを通して行われなければなりません。HTTPSを使わない場合、エラーとなります。
APIのリクエストはapi.foursquare.comに対して行われていることに注意してください。OAuthトークンと認証リクエストはfoursquare.comに対して行われます。
上記の例では/authorizeの代わりに/authenticateを使用しています。TwitterとLinkedInによる前例にならうと、 /authenticate ページは/authorize と同じですが、もしユーザが既に認証されている場合は、自動的にリダイレクトされる点が異なります。
OAuth2の仕様書ではユーザのパスワードをトークンと入れ替える ResourceOwner Password Credentials がありますが、私たちはセキュリティ上の理由により、サードパーティのクライアントにこれを使用することを許可していません。
foursquareがワイルドカードSSL証明書を使用しているため、Android上で動かす時に、問題があるかもしれません。より詳細な情報はStack Overflowの回 答を見てください。
現在のところOAuthのアクセストークンが期限切れになることはありませんが、あなたは将来的に期限切れになる可能性に備える必要があります。さらに、ユーザはいつでもfoursquareの設定ページでアクセスを中止することが出来る点を覚えておいてください。