.NET C#Google Apis - 无效的授予异常

时间:2013-12-04 17:09:16

标签: c# google-analytics

我开始使用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()代码行引发异常。任何人都可以协助并帮助我了解根本原因和可能的修复方法吗?

1 个答案:

答案 0 :(得分:1)

EMAIL_ADDRESS var必须是在API控制台(而不是您的Gmail地址)中设置API访问时创建的电子邮件地址。如果您正在处理谷歌应用程序,应用程序管理员将需要您的API客户端ID访问您尝试访问的誓言范围。 在serviceacountcredential类中,您设置了一个用于模拟特定用户的属性。

您还应该在服务器上导入和查询该证书的本地证书存储区。它包含公钥和私钥,不应存储在te文件系统中。