0

Web ページに、ユーザーがツイートできるようにしたい入力フィールドがあります。Oauth を使用してこれを実行できることはわかっていますが、JavaScript を使用しているため、ID とシークレットが表示されるため安全ではありません。これを行うより良い方法はありますか?

私が今やっている方法は次のようなものです:

var accessor = {
  token: "...",
  tokenSecret: "...",
  consumerSecret: "..."
  consumerKey : "...",
};

  //create message with input field text
  var message = {
  action: url,
  method: "GET",
  parameters: {...}
};

OAuth.completeRequest(message, accessor);        
OAuth.SignatureMethod.sign(message, accessor);
url = url + '?' + OAuth.formEncode(message.parameters);

しかし、これは私の秘密を明らかにします。

ありがとう

4

1 に答える 1

0

OAuth モデルには、サーバーまたは「リソース マネージャー」、アプリまたは「クライアント」、およびユーザーまたは「リソース所有者」の 3 つの関係者がいます。

あなたの場合、「クライアント」は Web アプリであり、構築しているものです。リソース マネージャーは twitter であり、ユーザーはリソース オーナーです。繰り返しますが、所有および管理されるリソースはツイート ストリームです。

OAuth を使用すると、クライアントはリソース所有者に代わってリソース マネージャーにリクエストを送信できます。あなたのシナリオに翻訳すると、アプリ (Web アプリ) がユーザーに代わってツイートを送信できることを意味します。

サーバー上で実行されるコード (PHP、Ruby、ASPNET など) とクライアント上で実行されるコード (Javascript) を含む Web アプリ モデルとその分散計算モデルは、問題を少し混乱させます。

ご指摘のとおり、キーとシークレットを JS コードに埋め込むことで、oauth を「実行」できます。これにより、公開したくないものが公開されることを正しく指摘しています。

明らかな代替手段は、そのようなものをサーバー側のコードに埋め込むことです。これには、ブラウザと twitter の間ではなく、サーバーと twitter の間で twitter への接続が発生する必要があります。ユーザーがツイートしたい場合は、ブラウザからサーバー上のコードに ajax 呼び出しを使用します。それを と呼びましょうmytweet.php。これはユーザーが作成するスクリプトで、OAuth ダンスを実行し、ユーザーに代わって twitter.com にステータス更新を送信します。

フォローしますか?

于 2012-05-28T18:49:23.360 に答える