2016-05-26 7 views
1

Ich entwickle eine React-Native App mit Open Bank Project und kann keine vorgeschlagenen SDKs verwenden, nicht einmal die NodeJS, da Oauth1.0 nicht in RN verfügbar ist. Und ich bin mit einem Bad Signature Fehler auf Access Token Anfrage '/ oauth/Token' nach bestanden '/ oauth/initiate' und '/ oauth/authorize' ohne Problem stecken.Ungültige Unterschrift Open Bank Project Oauth1.0a

Wie in den Dokumenten here vor dem Zugriff auf eine geschützte Ressource angegeben, benötigen wir ein Access Token über eine POST-Anfrage, die mir die Bad Signature Antwort gibt.

Hier ist mein Code für die Anforderung:

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)) 
    }) 
}) 

Hier ist die unterzeichnete Anfrage:

Objekt {Methode: "POST", Form: Objekt, headers: Object} Form: oauth_token : "..." oauth_token_secret: "..." oauth_verifier: "71531"

Header: Berechtigung: „OAuth oauth_c onsumer_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 ""

Ich habe es mit und ohne Oauth_token_secret versucht und auch oauth_verifier vom Hauptteil zur Abfrage verschoben, aber mit dem gleichen schlechten Signaturergebnis.

Irgendeine Idee? thx

+0

Eigentlich ist der Fehler msg 'INVALID SIGNATURE' – imaginair

Antwort

0

können Sie oauth Modul verwenden 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"); 

dann Erzeugen Signatur wie folgt aus:

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

Parameter Array Signatur enthält, können Sie auch Berechtigungsheader bauen, wenn nötig. Hoffe es hilft :)