2012-04-12 8 views
1

Ich versuche, eine json-Anfrage zur Authentifizierung unter Verwendung der oath2-Spezifikation für die "Dienstkonto" -Authentifizierung von Google zu erstellen. Ich verwende googles Dokumentation here. Es benutzt JWT. Es scheint, dass es nicht viele Informationen darüber gibt, wie man dies mit C# macht. Dies ist die RAW-JSON-Anfrage, die ich verwende, aber die einzige Antwort, die ich von Google bekommen kann, ist "invalid_request".OAuth2-Authentifizierung für "Google-Dienst" gibt "invalid_request" zurück

POST https://accounts.google.com/o/oauth2/token HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 
Host: accounts.google.com 
Content-Length: 457 
Expect: 100-continue 
Connection: Keep-Alive 

{ 
    "grant_type": "assertion", 
    "assertion_type": "http://oauth.net/grant_type/jwt/1.0/bearer", 
    "assertion": "JWT (including signature)" 
} 

Irgendwelche Ideen auf was könnte los sein? Ich versuche, einen Windows-Dienst zu erstellen, der Golfreisen in bestimmten Intervallen pingt. Gibt es möglicherweise eine andere Möglichkeit, auf diese API zuzugreifen, ohne durch diesen Rahmen zu springen? Vielen Dank!

+0

und natürlich bin ich das Ersetzen "JWT (einschließlich Unterschrift)" mit meinem eigenen berechneten Token – aceinthehole

+0

, die nicht aussehen wie Inhalte, die "application/x-www-form-urlencoded" entsprechen. Das ist JSON. – spender

Antwort

1

Die Dokumente sind relativ klar, dass Sie eine urlencodierte Zeichenfolge senden sollten. Statt json zu schreiben versucht, Post application/x-www-form-urlencoded Daten statt:

var invariantPart = "grant_type=assertion&" + 
    "assertion_type=http%3A%2F%2Foauth.net%2Fgrant_type%2Fjwt%2F1.0%2Fbearer&" + 
    "assertion="; 
var fullPostData = invariantPart + Uri.EscapeDataString(myCalculatedAssertion); 
//POST fullPostData to google 
Verwandte Themen