我正在开发一个带有开放银行项目的本机应用程序,我不能使用建议的SDK,甚至nodeJS 1也不能使用,因为RN中没有Oauth1.0。在传递'/oauth/initiate‘和'/oauth/authorize’之后,访问令牌请求'/oauth/ Token‘上出现了一个糟糕的签名错误,没有任何问题。
正如docs 这里中所指定的,在访问受保护的资源之前,我们需要通过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",窗体: Object,headers: Object} form: oauth_token:“.”Oauth_token_secret:“……”oauth_verifier:"71531“
标题:授权:"OAuth oauth_consumer_key=“.”、oauth_signature_method=“HMAC-1.0 256”、oauth_timestamp="1464248944“、oauth_token=”.“、oauth_token_secret=”.“、oauth_verifier="71531”、oauth_version=“1.0”
我尝试过使用和不使用Oauth_token_secret,也将oauth_verifier从一个身体移动到另一个查询,但是使用相同的不良签名结果。
有什么想法吗?thx
发布于 2017-01-25 07:47:46
您可以使用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);参数数组包含签名,还可以在需要时生成授权头。希望它有帮助:)
https://stackoverflow.com/questions/37455475
复制相似问题