请求令牌的演示/演示和说明不起作用。当我完全执行我的代码并运行它时,每次都会收到400错误,这个json响应:
{
error: "invalid_grant"
}
https://developers.google.com/accounts/docs/OAuth2ServiceAccount#makingrequest
我一直在努力让这个工作近一个星期,而且我在这里没有得到任何有用的帮助,我看到很多类似的问题在这里没有答案。
谢谢,任何帮助都会很棒!
卡尔..
这是我正在使用的代码(我已经包含了一些内容,我可能需要透露内部代码)。注意:我留下了奇怪的\ /斜杠里面的索赔范围和审计道具,因为我正在尝试从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);
答案 0 :(得分:1)
代码仅在几分钟内有效,过期后您将收到invalid_grant作为回复。
您可以在此处粘贴代码构造的JSON有效内容吗?这样可以更轻松地发现问题。