如何在javascript中为访问令牌生成oauth1签名?

时间:2015-10-16 19:27:39

标签: javascript meteor oauth etrade-api

我是etrade oauth集成的最后一部分 - (即发送访问令牌的GET请求。)这个oauth发生在meteor.js环境中,因此所有代码都是用javascript编写的。

目前我收到401错误 - 来自etrade的oauth_problem = signature_invalid回复。经过大量的科学研究,根据大平均数定律,部分因为我是天才,我得出的结论是我签名无效。

使用这个维基百科文章https://en.wikipedia.org/wiki/Hash-based_message_authentication_code(node.js部分)和本oauth文档https://dev.twitter.com/oauth/overview/creating-signatures我编写了以下代码:

   var signature       = encodeURI(secretKey)
   signature           = signature + "&" + encodeURI(contentArr.oauth_token_secret);
   hmacSignature       = Crypto.createHmac('sha1', signature);
   hmacHash            = hmacSignature.digest('hex');

hmacHash是我传递的变量,作为我的访问令牌获取请求的oauth_signature参数,但没有go:/仍然获取signature_invalid错误消息。有什么建议 ???显然,如果你给我一个好的答案,我会把它标记为已被接受。

提前致谢。 :)

1 个答案:

答案 0 :(得分:0)

只需设法使它起作用!

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = { canvasArray: [] };
    this.captureRef = React.createRef();
  }

  getScreenshotHandler = () => {
    html2canvas(this.captureRef.current).then(canvas =>
      this.setState({
        canvasArray: [canvas.toDataURL(), ...this.state.canvasArray],
      }),
    );
  };

  renderCanvas = () => {
    return this.state.canvasArray.map((canvas, i) => {
      return <img key={i} src={canvas} alt="screenshot" />;
    });
  };

  render() {
    return (
      <div className="wrapper">
        <div ref={this.captureRef} className="to-capture">
          <p>
            This enitre <code>div</code> will be captured
          </p>
        </div>
        <button onClick={this.getScreenshotHandler}>Get Screenshot!</button>
        <section>
          <h5>Your screenshots will be availbale below:</h5>
          {this.renderCanvas()}
        </section>
      </div>
    );
  }
}