0

我的网页上有一个输入字段,我想允许用户发推文。我知道我可以使用 Oauth 来做到这一点,但是因为我使用的是 JavaScript,所以它是不安全的,因为我的 id 和 secret 是可见的。有一个更好的方法吗?

我现在这样做的方式是这样的:

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 模型中,存在三方:服务器或“资源管理器”、应用程序或“客户端”以及用户或“资源所有者”。

在您的情况下,“客户端”是 Web 应用程序,即您正在构建的东西。资源管理器是twitter,用户是资源所有者。也许值得重复:拥有和管理的资源是推文流。

OAuth 允许客户端代表资源所有者向资源管理器提交请求。转换为您的场景,这意味着您的应用程序(网络应用程序)可以代表用户提交推文。

Web 应用程序模型及其分布式计算模型,一些代码在服务器上运行(PHP、Ruby、ASPNET 或其他任何东西)和一些在客户端上运行的代码(Javascript)有点混淆了这个问题。

正如您所指出的,您可以通过在 JS 代码中嵌入密钥和秘密来“执行”oauth。您正确地指出,这会暴露您不想暴露的东西。

显而易见的替代方法是将这些内容嵌入到服务器端代码中。这要求与 twitter 的连接发生在服务器和 twitter 之间,而不是浏览器和 twitter 之间。当用户想要发推文时,从浏览器使用 ajax 调用到您服务器上的一段代码,让我们调用它mytweet.php。这是您编写的脚本,然后它会执行 OAuth 并代表用户向 twitter.com 发送状态更新。

你跟着?

于 2012-05-28T18:49:23.360 回答