2016-05-12 7 views
2

Ich versuche, eine OAuth2-Anforderung an die Box-API zu erstellen. Die Beispiel-POST-Anfrage, die sie als Richtlinie geben, ist für mich etwas zweideutig, da ich gerade die Backend-Entwicklung lerne. Das Beispiel ist wie folgt:Knoten JS - Konstruieren einer OAuth2-Anforderung

POST /token 
Content-Type: application/x-www-form-urlencoded 
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer& 
assertion=<JWT>& 
client_id=<client_id>& 
client_secret=<client_secret> 

Offizielle Dokumente: https://box-content.readme.io/docs/app-auth

So wie ich versucht, dies zu tun, ist wie folgt:

var boxHeaders = { 
    'Content-Type': 'application/x-www-form-urlencoded' 
}; 

var boxOptions = { 
    url: 'https://api.box.com/oauth2/token', 
    method: 'POST', 
    headers: boxHeaders, 
    form: { 
    'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', 
    'assertion': boxtoken, 
    'client_id': 'myclientid', 
    'client_secret': 'myclientsecret' 
    } 
}; 

request.post(boxOptions, function(err, response, body) { 
    console.log(body); 
}); 

Ich erhalte die folgende Fehlermeldung:

{ 
    "error":"invalid_request", 
    "error_description":"Invalid grant_type parameter or parameter missing" 
} 

Offensichtlich ist der Grant-Typ falsch, aber ich habe keine Ahnung h Es ist wichtig, die Zeichenfolge basierend auf dem Box-API-Beispiel zu konstruieren. Wenn mir jemand helfen kann und mir sogar einige gute Artikel oder Tutorials dazu vorlegt, wäre das großartig!

Vielen Dank.

Antwort

1

Ich habe gerade damit selbst gekämpft. Ich konnte das zum Laufen bringen, indem ich alles, was Sie gerade in boxOptions.form haben, in den Anfragetext umwandelte.

Zum Beispiel:

var boxHeaders = { 
    'Content-Type': 'application/x-www-form-urlencoded' 
}; 

var boxOptions = { 
    url: 'https://api.box.com/oauth2/token', 
    method: 'POST', 
    headers: boxHeaders 
}; 

var form = { 
    grant_type:'urn:ietf:params:oauth:grant-type:jwt-bearer', 
    client_id: 'id', 
    client_secret: 'secret', 
    assertion: boxtoken 
}; 

var request = https.request(boxOptions, function(response) { 
    // do stuff 
}); 

request.write(querystring.stringify(form)); 
request.end(); 

Hoffnung, das hilft. Leider kenne ich die Anforderungsbibliothek nicht ausreichend, um ein Beispiel dafür zu geben.

+0

Hallo Sarah, danke. Ich habe das zum Laufen gebracht, indem ich dasselbe gemacht habe, obwohl ich später weitere Fehler bekommen habe. – Aaron