【问题标题】:Google ouath2 Token Request Does not workGoogle oauth2 令牌请求不起作用
【发布时间】: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


【解决方案1】:

代码仅在几分钟内有效,过期后您将收到 invalid_grant 作为响应。

您能否在此处粘贴您的代码构造的 JSON 有效负载?这会让发现问题变得更容易。

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2013-08-03
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多