【发布时间】:2014-05-12 22:03:34
【问题描述】:
这个请求令牌的演练/演示和说明不起作用。当我完全按照你的方式执行我的代码并运行它时,我每次都会收到 400 错误,并且这个 json 响应:
{
error: "invalid_grant"
}
https://developers.google.com/accounts/docs/OAuth2ServiceAccount#makingrequest
我现在已经尝试让它工作了将近一周,但在这里没有得到任何有用的帮助,而且我在这里看到很多类似的问题没有答案。
谢谢,任何帮助都会很棒!
卡尔..
这是我正在使用的代码(我已经总结了一下,可能需要透露内部代码)。注意:我在声明的范围和 aud 道具中留下了奇怪的 \/ 斜杠,因为我正在尝试从 Stack http://goo.gl/bt9lPj 修复另一个人(这似乎也不起作用,我得到了完全相同的错误)
var claimbuilder = new Stub.Jwt.ClaimsBuilder();
claimbuilder.Add("iss", "...@developer.gserviceaccount.com");
claimbuilder.Add("scope", "https:\\/\\/picasaweb.google.com\\/data\\/");
claimbuilder.Add("aud", "https:\\/\\/accounts.google.com\\/o\\/oauth2\\/token");
claimbuilder.Add("exp", (Stub.Jwt.Utility.UnixTime + (60 * 5)).ToString());
claimbuilder.Add("iat", Stub.Jwt.Utility.UnixTime.ToString());
string head = "{\"alg\":\"RS256\",\"typ\":\"JWT\"}";
var jwt = String.Format("{0}.{1}", head, claimbuilder.ClaimSet);
Console.WriteLine(jwt);
var certificate = new X509Certificate2(@"....-privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable);
var token = new Stub.Jwt.JsonWebToken();
var jwtresult = token.Generate(head, claimbuilder.ClaimSet, certificate);
Console.WriteLine("jwt: {0}", jwtresult);
OAuth.Response resp = new OAuth.Response();
OAuth.Request auth = new OAuth.Request("https://accounts.google.com/o/oauth2/token");
auth.AddPostVar("grant_type", HttpUtility.UrlEncode("urn:ietf:params:oauth:grant-type:jwt-bearer")); // "authorization_code");
auth.AddPostVar("assertion", jwt);
auth.Go(resp);
Console.WriteLine(resp.OAuthTokenValue);
【问题讨论】:
-
Google 在此声明:groups.google.com/forum/#!forum/oauth2-dev 他们支持并将监控 Stack。不是这样吗?从那个页面“我们在 Stack Overflow 上支持 Google OAuth2。Google 工程师监控并回答标签 google-oauth。你应该在提问时使用这个标签。”
-
也许他们会。事实仍然是我们不是谷歌支持,而您正在像我们一样解决您的问题。
-
嗯,好的。我会进行编辑。
-
您能否发布一些您正在使用的代码。您使用什么语言进行此操作。@jwenting Google-Oauth 问题在此处有效,因此此处提出了有关使用 Google-Oauth 的标签和 1.2k 问题。
-
@DaImTo 并没有说这不是主题,但它的措辞使它成为对谷歌的支持请求,而不是一个 SO 问题。
标签: google-oauth