我开始使用Google Api(.NET版本)。 - 我使用NuGet初始化了一个VS 2010 / .NET 4.0项目来获取当前的库。 - 我已经创建了Google控制台项目,并确保在其中启用了Google+和Google Analytics.v3的API - 我创建了一个用于验证的X509证书。身份验证似乎有效。 - 我使用我的谷歌电子邮件地址,因为它拥有所有项目,并且是api全能角色。 - 我已将时间同步到north-america.pool.ntp.org ...只是为了确保我的时间与Google时间类似。
问题:无论是服务 - Analytics或Plus - 我都会收到invalid_grant异常。我不知道为什么......其他论坛认为这是一个时间问题,但我认为,至少,我已经通过将时间服务器设置为Google似乎使用的内容来解决这个问题。
我正在做的代码如下所示:
public static void Main(string[] args)
{
Console.WriteLine("Plus API - Service Account");
Console.WriteLine("==========================");
String serviceAccountEmail = EMAIL_ADDRESS;
var certificate = new X509Certificate2(@"c:\tmp\PrivateKey3.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { PlusService.Scope.PlusMe }
}.FromCertificate(certificate));
// Create the service.
var service = new PlusService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Plus API Sample",
});
Activity activity = service.Activities.Get(ACTIVITY_ID).Execute();
Console.WriteLine(" Activity: " + activity.Object.Content);
Console.WriteLine(" Video: " + activity.Object.Attachments[0].Url);
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
发生故障/ service.Activities.Get()代码行引发异常。任何人都可以协助并帮助我了解根本原因和可能的修复方法吗?
答案 0 :(得分:1)
EMAIL_ADDRESS var必须是在API控制台(而不是您的Gmail地址)中设置API访问时创建的电子邮件地址。如果您正在处理谷歌应用程序,应用程序管理员将需要您的API客户端ID访问您尝试访问的誓言范围。 在serviceacountcredential类中,您设置了一个用于模拟特定用户的属性。
您还应该在服务器上导入和查询该证书的本地证书存储区。它包含公钥和私钥,不应存储在te文件系统中。