“Google服务”的OAuth2身份验证返回“invalid_request”

时间:2012-04-12 23:37:36

标签: c# .net google-api oauth-2.0 jwt

我正在尝试使用oath2规范为Google的“服务帐户”身份验证形成一个json请求进行身份验证。我正在使用谷歌的文档here。它正在使用JWT。似乎没有太多关于如何使用C#执行此操作的信息。这是我正在使用的RAW json请求,但我可以从google获得的唯一响应是“invalid_request”。

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

关于可能发生的事情的任何想法?我正在尝试创建一个以固定间隔ping谷歌纬度位置的Windows服务?是否有其他方法可以在不跳过此环的情况下访问该API?谢谢!

1 个答案:

答案 0 :(得分:1)

文档相对清楚,你应该POST一个urlencoded字符串。而不是试图发布json,而是发布application / x-www-form-urlencoded数据:

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