具有帐户链接和gmail API .NET的Alexa技能 - 身份验证

时间:2017-01-06 03:17:06

标签: c# .net google-api account alexa

我创建了Alexa技能并启用了帐户关联功能。设置我的技能配置以指向谷歌授权和令牌服务器,技能成功链接。然后alexa将POST请求发送到我的服务,其中包括来自Google的访问令牌和状态。我使用它来验证令牌,我想要做的是使用令牌访问gmail api并开始调用操作。

但是,我能找到的唯一在线示例包括再次使用客户端密钥和客户端ID重新构建gmailservice。我想因为我已经拥有访问令牌,为什么我需要再次包含秘密和ID?如何使用我已有的访问令牌进行gmail api调用,或者这是不可能的?这是我正在尝试使用的代码:

UserCredential credential;

        using (var stream =
            new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
        {
            string credPath = System.Environment.GetFolderPath(
                System.Environment.SpecialFolder.Personal);
            credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart.json");

            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;
            Console.WriteLine("Credential file saved to: " + credPath);
        }

        // Create Gmail API service.
        var service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

        // Define parameters of request.
        UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");

        // List labels.
        IList<Label> labels= request.Execute().Labels;
        Console.WriteLine("Labels:");
        if (labels != null && labels.Count > 0)
        {
            foreach (var labelItem in labels)
            {
                Console.WriteLine("{0}", labelItem.Name);
            }
        }
        else
        {
            Console.WriteLine("No labels found.");
        }
        Console.Read();

我不想包含client_secret.json文件,因为我已经在alexa技能的帐户链接中获得了谷歌的oauth流程的授权。帮忙?

0 个答案:

没有答案