1

我正在使用 Open Bank Project 开发一个 React-Native 应用程序,但我不能使用建议的 SDK,甚至不能使用 nodeJS,因为 Oauth1.0 在 RN 中不可用。在通过“/oauth/initiate”和“/oauth/authorize”后,我遇到了访问令牌请求“/oauth/token”的错误签名错误,没有任何问题。

正如此处的文档中所述,在访问受保护的资源之前,我们需要通过 POST 请求获得访问令牌,这给了我错误的签名答案。

这是我的请求代码:

getAccessToken(verifier){
let request = {
  url:    'https://api.openbankproject.com/oauth/token',
  method: 'POST',
  data: {
    oauth_verifier: verifier,
    oauth_token: this.auth.oauth_token,
    oauth_token_secret: this.auth.oauth_token_secret
  }
}
return fetch(this.url_login, {
  method:     request.method, //POST
  form:       request.data,
  headers:    this.oauth.toHeader(this.oauth.authorize(request))
})
.then((res) => {return res.text()})
.then((txt) => {
  console.log('setUID', txt, this.url_login, {
    method:     request.method,
    form:       request.data,
    headers:    this.oauth.toHeader(this.oauth.authorize(request))
  })
})

这是签名的请求:

对象{方法:“POST”,形式:对象,标题:对象} 形式:oauth_token:“...” oauth_token_secret:“...” oauth_verifier:“71531”

headers: Authorization: "OAuth oauth_consumer_key="...", oauth_nonce="3UlQ5dx958tibf6lSg0RUGPQFZeV7b8V", oauth_signature="weyE1lFkoIjAErYLKdSi9SDlCZsNBi7%2BuAkLV2PWePo%3D", oauth_signature_method="HMAC-SHA256", oauth_timestamp="1464248944", oauth_token="... ", oauth_token_secret="...", oauth_verifier="71531", oauth_version="1.0""

我尝试过使用和不使用 Oauth_token_secret,还将 oauth_verifier 从正文移动到查询,但具有相同的错误签名结果。

任何想法?谢谢

4

1 回答 1

0

您可以使用 oauth 模块https://github.com/ciaranj/node-oauth

   var oauth=require('oauth');         
   var consumer = new oauth.OAuth(
     "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", 
_twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://127.0.0.1:8080/sessions/callback", "HMAC-SHA1");

然后生成这样的签名:

    var parameters = consumer._prepareParameters("user_access_token", "user_access_token_secret", "http_method", "request_url");
    var headers = consumer._buildAuthorizationHeaders(parameters);

参数数组包含签名,如果需要,您也可以构建授权标头。希望能帮助到你 :)

于 2017-01-25T07:47:46.527 回答