私が見つけた最良のアプローチは、ユーザーにAPI_KEYとSECRET_KEYを与えることでした。
API_KEY、タイムスタンプ、および呼び出しに必要なその他のパラメータを渡してREST APIリクエストを作成します。
PHPのようなスクリプト言語を使用すると、SECRET_KEYで双方向暗号化を使用してAPI_SIGNATURE変数を作成し、それをベースURLに追加すると、それがあなたのリクエストとして実行されます。
誰もがそのリクエストを見ることができるので、タイムスタンプをパラメータとして使用するのはこのためです。基本的には、1分未満の要求のみを処理する制約を置くことができます。
例:(スクリプト言語でのこの部分を行う)
$API_BASE_URL="http://api.yourdomain.com/1.1/comments.json?api_key=2002×tamp=2323234544&id=4";
$API_KEY=300;
$API_SIGNATURE=hash_hmac('sha256', API_BASE_URL, API_KEY);
$API_URL=$API_BASE_URL.'&api_signature='.$API_SIGNATURE;
- あなたのjqueryのAjaxのURLで今すぐ
:PHPを使用しての$ API_URLをエコー。
- あなたのAPIで
あなたがユーザーを検索要求がAPI_KEYに基づいており、そのSECRET_KEYを取得し、署名を復号化し、渡されたものと一致することを確認することが今確認し合格した場合はアカウントを取得。タイムスタンプを作成し、要求が1分未満であることを確認してください。
リクエストを処理する前にレート制限と他のものを一括して送信することもできます。
それはそれです。
また、クロスドメインリクエストはブラウザで許可されていないと言われています。あなたがjsonを要求しているが、jsonpを使ってこれを回避することができればそれは本当です。
hash_hmacは、多くのプログラミング言語とスクリプト言語で利用できます。ですから、もしあなたがAPIを開発すれば、それはPHPでウェブ上で、また、目的のCであなたのiPhoneアプリでそれを使うことができます。
かなり簡単です。
完全に正しい! +1! (注:JSONPを使用してクロスドメインリクエストをシミュレートすることができます) – jwueller
@ BrunoLM ok、私はそれを部分的に理解しました。 *** 'javascriptでドメイン間のリクエストを行うことはできません' ***この文章に従って、http://exmaple.com/service1/GetSomething?apikey=96a143c8-2f62-470c-b81f-dec5fc271873サービスはできませんクライアントサイドのコードでhttp://example.orgから呼び出されます。右? – tugberk
@ BrunoLMでも、私のアプリでそのサービスを利用するサービスを作成したと仮定します。このサービスのURLはhttp://example.co.uk/MyServiceです。このサービスには私のapiキーとすべてのものが含まれ、結果を返します。このサービスは、クライアント側のコード内で使用する私のサービスとなります。 smbdyがそのサービスを消費するのを阻止するものは何ですか?たとえば、フィドラー? – tugberk