【发布时间】:2017-11-08 17:59:26
【问题描述】:
我需要在我的 Web 应用程序中实现 gmail。在我的网络应用程序中实现 Gmail 时,我遇到了上述异常。
我已经尝试过 Gmail API 快速入门中提到的步骤... https://developers.google.com/gmail/api/quickstart/dotnet
当我尝试创建 GmailService 的对象时,我遇到了一个异常。我的代码如下...
static UserCredential GetGmailUserCredential()
{
UserCredential credential;
string[] scopes = { GmailService.Scope.GmailReadonly };
string credPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), ".credentials/gmail-dotnet-quickstart.json");
try
{
using (var stream = new System.IO.FileStream(@"D:\Projects_Temp\Learning\Webform\GSuite\client_secret.json", System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
scopes,
Environment.UserName,
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
}
catch (Exception ex)
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientID, ClientSecret = clientSecret }
, scopes
, Environment.UserName
, CancellationToken.None
, new FileDataStore(credPath, true)).Result;
}
return credential;
}
public static GmailService GetGmailClient()
{
var credential = GetGmailUserCredential();
// Create Drive API service.
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential
});
return service;
}
public static List<Label> GetLabels(GmailService service)
{
// Define parameters of request.
UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
// List labels.
return request.Execute().Labels.ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (GmailService service = GSuiteHelper.GetGmailClient())
{
var lst = GSuiteHelper.GetLabels(service);
}
}
}
【问题讨论】:
-
你安装了 nuget 包吗?你创建了什么类型的项目,你的目标是什么框架?另请注意,如教程中所述,代码是为“简单的 .NET 控制台应用程序”设计的,它不适用于 Web 应用程序。
-
此示例在控制台应用程序中也不起作用。是的,我已经完成了文章中提到的所有事情。我已经以同样的方式实现了 Google Drive 和 Google Calendar 并且它们正在工作。只有这个功能根本不起作用。
标签: google-api gmail gmail-api google-api-client google-api-dotnet-client