无效签名 Open Bank Project Oauth1.0a
Invalid signature Open Bank Project Oauth1.0a
我正在使用 Open Bank Project 开发一个 React-Native 应用程序,我不能使用建议的 SDK,甚至 nodeJS 也不能,因为 Oauth1.0 在 RN 中不可用。
在通过'/oauth/initiate'和'/oauth/authorize'没有任何问题后,我在访问令牌请求'/oauth/token'上遇到错误签名错误。
如文档中所述 here 在访问受保护资源之前,我们需要通过 POST 请求获得访问令牌,这给了我 Bad Signature 答案。
这是我的请求代码:
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))
})
})
这是签名的请求:
Object{方法:"POST",形式:Object,headers:Object}
形式:
oauth_token:“……”
oauth_token_secret:“……”
oauth_verifier:"71531"
headers:
授权:
"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 从 body 移动到查询,但得到相同的 Bad Signature 结果。
有什么想法吗?谢谢
您可以使用 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);
参数数组包含签名,也可以根据需要建立授权headers。希望对您有所帮助:)
我正在使用 Open Bank Project 开发一个 React-Native 应用程序,我不能使用建议的 SDK,甚至 nodeJS 也不能,因为 Oauth1.0 在 RN 中不可用。 在通过'/oauth/initiate'和'/oauth/authorize'没有任何问题后,我在访问令牌请求'/oauth/token'上遇到错误签名错误。
如文档中所述 here 在访问受保护资源之前,我们需要通过 POST 请求获得访问令牌,这给了我 Bad Signature 答案。
这是我的请求代码:
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))
})
})
这是签名的请求:
Object{方法:"POST",形式:Object,headers:Object} 形式: oauth_token:“……” oauth_token_secret:“……” oauth_verifier:"71531"
headers: 授权: "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 从 body 移动到查询,但得到相同的 Bad Signature 结果。
有什么想法吗?谢谢
您可以使用 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);
参数数组包含签名,也可以根据需要建立授权headers。希望对您有所帮助:)