英文:
C# get credentials from Google Sheets API
问题
我遇到了从Google API获取凭据的问题。我搜索了很多旧话题,但找不到解决方法。
我的代码如下:
static readonly string[] Scopes = { SheetsService.Scope.Spreadsheets };
static readonly string ApplicationName = "Dot Tutorials";
static readonly string sheet = "Arkusz1";
static readonly string SpreadsheetId = "1IEvv4enfouBXrGEVLTKeQNYTJIzQHmRNyKTxKAxEAfg";
static SheetsService service;
GoogleCredential credential;
//读取凭据文件...
using (var stream = new FileStream("secret.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(Scopes);
}
// 创建Google Sheets API服务...
service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
我下载的secret.json如下:
{
"installed": {
"client_id": "1087609048092-hdh5ku57kaamha72o7t3tdtkb62vq5ur.apps.googleusercontent.com",
"project_id": "excellent-well-151116",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "*********隐藏我的秘密代码*******",
"redirect_uris": [
"http://localhost"
]
}
}
当我运行它时,仍然出现错误:
System.InvalidOperationException: 'Error creating credential from JSON or JSON parameters. Unrecognized credential type .'
我不知道这里出了什么问题。我尝试遵循这个教程:https://dottutorials.net/google-sheets-read-write-operations-dotnet-core-tutorial/
我的目标是从这个电子表格中获取值到一个DataTable:https://docs.google.com/spreadsheets/d/1IEvv4enfouBXrGEVLTKeQNYTJIzQHmRNyKTxKAxEAfg/edit#gid=0。
英文:
I have a problem with get credentials from Google API.
I searched a lot of old topics and can't find solution.
My code looks like:
static readonly string[] Scopes = { SheetsService.Scope.Spreadsheets };
static readonly string ApplicationName = "Dot Tutorials";
static readonly string sheet = "Arkusz1";
static readonly string SpreadsheetId = "1IEvv4enfouBXrGEVLTKeQNYTJIzQHmRNyKTxKAxEAfg";
static SheetsService service;
GoogleCredential credential;
//Reading Credentials File...
using (var stream = new FileStream("secret.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(Scopes);
}
// Creating Google Sheets API service...
service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
Secret .json I downloaded :
{
"installed": {
"client_id": "1087609048092-hdh5ku57kaamha72o7t3tdtkb62vq5ur.apps.googleusercontent.com",
"project_id": "excellent-well-151116",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "*********hidden my secret code*******",
"redirect_uris": [
"http://localhost"
]
}
}
And when I run it I still am getting the error:
> System.InvalidOperationException: 'Error creating credential from JSON or JSON parameters. Unrecognized credential type .'
I don't know what is wrong here. I'm trying to follow this tutorial: https://dottutorials.net/google-sheets-read-write-operations-dotnet-core-tutorial/
My goal is to get values from this spreadsheet into a DataTable: https://docs.google.com/spreadsheets/d/1IEvv4enfouBXrGEVLTKeQNYTJIzQHmRNyKTxKAxEAfg/edit#gid=0.
答案1
得分: 1
以下是您想要的内容:
UserCredential credential2;
using (var stream = new System.IO.FileStream(clientSecretsPath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
credential2 = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.FromStream(stream).Secrets,
new[] { GmailService.Scope.MailGoogleCom },
"my@gmail.com", CancellationToken.None, new FileDataStore("LoginCookieStoredHere"));
}
return new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential2,
ApplicationName = "Gmail API Example"
});
英文:
Here is what you want:
UserCredential credential2;
using (var stream = new System.IO.FileStream(clientSecretsPath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
credential2 = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.FromStream(stream).Secrets,
new[] { GmailService.Scope.MailGoogleCom },
"my@gmail.com", CancellationToken.None, new FileDataStore("LoginCookieStoredHere"));
}
return new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential2,
ApplicationName = "Gmail API Example"
});
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论