我创建了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流程的授权。帮忙?