我正在使用Open Bank Project开发React-Native应用程序而我无法使用建议的SDK,甚至不是nodeJS,因为Oauth1.0在RN中不可用。 我在访问令牌请求' / oauth / token'上遇到了Bad Signature错误。在通过' / oauth / initiate'和' / oauth / authorize'没有任何问题。
在访问受保护资源之前,如文档here中所指定的,我们需要通过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"
标头: 授权: " OAuth oauth_consumer_key =" ...",oauth_nonce =" 3UlQ5dx958tibf6lSg0RUGPQFZeV7b8V",oauth_signature =" weyE1lFkoIjAErYLKdSi9SDlCZsNBi7%2BuAkLV2PWePo%3D",oauth_signature_method =&#34 ; HMAC-SHA256",oauth_timestamp =" 1464248944",oauth_token =" ...",oauth_token_secret =" ...",oauth_verifier =& #34; 71531",oauth_version =" 1.0""
我已尝试使用和不使用Oauth_token_secret,同时将oauth_verifier从正文移动到查询但具有相同的错误签名结果。
有什么想法吗? THX
答案 0 :(得分: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);
parameters数组包含签名,如果需要,您也可以构建授权头。希望它有所帮助:)